linux定时器脚本
1:
编辑/etc/crontab
文件配置cron
2:
crontable内容
f1
f2
f3
f4
f5
program
其中
f1
是表示分钟,f2
表示小时,f3
表示一个月份中的第几日,f4
表示月份,f5
表示一个星期中的第几天。program
表示要执行的程序。
#每天12点执行一次
/bin/ls
:
0
12
*
*
*
/bin/ls
3:
启动
/sbin/service
crond
start
//启动服务
/sbin/service
crond
stop
//关闭服务
/sbin/service
crond
restart
//重启服务
/sbin/service
crond
reload
//重新载入配置
2. Kali-linux 定时执行任务Crontab的简单设置
1.修改crontab文件添加或修改定时任务 
直接编辑文件:nano /etc/crontab
  
 或使用crontab命令:crontab -e
  
  2.语法介绍: 
  
 里面已经有一些test示例,照着添加或修改就行,这里做点简单介绍:
  
  time  user  command 
  
 分                 时             天           月               星期                    用户              命令
  
 minute         hour         day         month         dayofweek         user              command
  
  A. 时间 time: 
  
 minute: 分钟,从 0 到 59 之间的任何整数
  
 hour: 小时,从 0 到 23 之间的任何整数
  
 day: 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)
  
 month: 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)
  
 dayofweek: 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)
  
 command: 要执行的命令(command是linux终端可以直接执行的命令。)
  
 这里一些符号可以表示以上特殊数值:
  
 *表示所有有效值
  
 -表示范围, 比如1-4(从1到4)
  
 ,表示散数数值, 比如1,2,4,7...
  
 /表示每隔,比如 */19 (每隔19 )
  
 看一些简单的例子,以下是我自己的一个crontab文件:
  
 root@mtx:~#crontab -l
  
 # /etc/crontab: system-wide crontab
  
 # Unlike any other crontab you don't have to run the `crontab'
  
 # command to install the new version when you edit this file
  
 # and files in /etc/cron.d. These files also have username fields,
  
 # that none of the other crontabs do.
  
 SHELL=/bin/sh
  
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  
 # m h dom mon dow usercommand
  
 #17 ** * *root    cd / && run-parts --report /etc/cron.hourly#每小时的17分
  
 #25 6* * *roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )#每天6点25分
  
 #47 6* * 7roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )#每年7月份里每一天的6点47分
  
 #52 61 * *roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )#每个月1号的6点52分
  
 */4 *   * * *   root    /home/Tool/httpslow/httpslow.sh 每4分钟
  
 #
  
  B. 命令 command 
  
 命令command直接是linux终端可以执行的命令或可执行脚本的绝对位置
  
  3.使用方法: 
  
 crontab crontab_file (-u user)#如crontab /etc/crontab -u root (root用户执行默认配置文件)
  
 crontab -l#查看当前正在运行的crontab服务
  
 crontab -r#删除用户crontab配置文件
  
 crontab -i#删除前给出提示
  
 crontab -h#查看帮助
  
 /etc/init.d/cron start/stop/restart/reload#启动/停止/重启/重新加载 crontab服务
  
 简单的临时重复命令完全可以有其他方案代替:
  
 while true;do clear && echo '您的ip地址是:' && wget -qo- ifconfig.me/ip;sleep 120;done
  
 #每2分钟刷新一次外网ip地址,并打印出来”
  
 watch -n 5 netstat -nus#显示网络流量,每5秒刷新一次
  
 。。。
3. linux下怎么定时执行脚本
配置定时任务或者说计划任务,设定在你需要的时间执行脚本
写好脚本,再通过crontab -e设置定时任务,然后通过crontab -l查看定时任务。
4. 如何使用Linux的Crontab定时执行php脚本的方法
键入 crontab 
-e 编辑crontab服务文件
------------------------------------------Ubuntu中的linux---------------
安装lynx包:apt-get isntall lynx
先写ln.sh脚本:lynx http://10.11.12.49/data_task.php
 
设置定时:crontab -e
0 1 * * * bash /var/www/test/ln.sh
-------------------------------------------------------------------------
分为两种情况:
第一种情况:你的php脚本中没有引入其他PHP文件,也就是说没有include,require_once等命令的PHP文件
* */1 * * * /usr/local/php/bin/php 
/var/www/html/wwwroot/web/script.php (每一小时执行一次script.php)
注意,这样写需要把PHP变成可执行的脚本文件。在命令行下,脚本所在目录
chmod +x script.php
注意:你的script.php文件中一定要在开始处加上: #!/usr/local/php/bin/php -q
,下面是一个完整的script.php文件代码
<?php
#!/usr/local/php/bin/php -q
session_start();
define( "DB_PASSWORD", "111111" ); // 服务器登陆密码
define( "DB_NAME", "db_shopping" ); // 数据库名称
define( "DB_USER", "root" ); // 服务器登陆用户
define( "DB_HOST", "127.0.0.1" ); // 服务器IP地址或名称
define( "DB_PORT", "3306" ); // 服务器登陆端口号
define( "DB_CHARSET", "utf8" ); // 数据库默认语言
define( "DB_DEBUG", false ); // 是否设置为调试模式
define( "DB_CLOSE", false ); // 是否主动关闭数据库连接
$con=mysql_connect(DB_HOST.":".DB_PORT,DB_USER,DB_PASSWORD);
mysql_query ( "SET character_set_connection = ".DB_CHARSET.",
character_set_results = ".DB_CHARSET.", character_set_client =
binary");
if (!$con) die("Mysql Error:".mysql_error());
mysql_select_db(DB_NAME,$con);
//$dates=date()
$sqll="insert into test(NAME,Sex,thisdate,state)
values('love','0','2011-08-11','1')";
$resl=mysql_query($sqll);
echo "成功...";
?>
/usr/local/php/bin/php的意思是:用/usr/local/php/bin/目录中的php.exe文件来执行
/var/www/html/wwwroot/web/script.php
第二种情况:你的php脚本中有引入其他PHP文件,也就是说有用到include,require_once命令的PHP文件(先写shell脚本)
上面的方法有一个问题:当script脚本中有include文件时,脚本根本找不对PHP的路径,php将会在/bin/local/php目录下找文件,当然找不到。
所以,遇见这种情况,按照下面的方法做:
在终端上输入如下命令得到sh 和 lynx 程序的路径:
whereis sh
whereis lynx
or
which sh
which lynx
随便输入一个,其中便会返回你要的路径。如果你的系统里没有lynx,试试links,w3m,或者
links2,这些是其它的文本模型浏览器。这些浏览器将会运行你的脚本。
然后你需要创建一个sh文件,用它来调用php文件,通过lynx。假设你的服务器已经安装了lynx,sh路径为
/bin/sh,lynx路径为 /usr/local/bin/lynx
#!/bin/sh
/usr/local/bin/lynx -source
http://www.yoursite.com/folder/script.php
注意感叹号
把这个脚本保存为cron-lynx.sh
保存到一个你找得到的地方,比如:
你可以把它放在网站根目录。
然后再创建一个script.php的文件。当cron运行的时候,将会通过lynx来调用它。这个文件可以通过浏览器来访问。
然后编辑主机的crontab,像下面这样。
*/1 * * * * root /bin/sh
/usr/www/yourdirectory/sh_scripts/cron-lynx.sh
在/bin/sh 和 /usr 间有空格。就这样就设好了,还有一点要注意的是,你的sh文件和php文件都正确无误。
===================================================================================
linux下的crontab服务:
1、crontab 是用来让使用者在固定时间或固定间隔执行程序之用
在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。
以某一频率执行任务
linux缺省会启动crond进程,crond进程不需要用户启动、关闭。
crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。
cron的调度文件有以下几个:
    1.
crontab
    2.
cron.d
    3.
cron.daily
    4.
cron.hourly
    5.
cron.monthly
    6.
cron.weekly
如果用的任务不是以hourly monthly weekly方式执行,则可以将相应的crontab写入到crontab
或cron.d目录中。
示例:
每隔一分钟执行一次脚本 /opt/bin/test-cron.sh
可以在cron.d新建脚本 echo-date.sh
内容为
*/1 * * * * root /opt/bin/test-cron.sh
2、cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron
是Linux的内置服务,如果它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
你也可以将这个服务在系统启动的时候自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
现在Cron这个服务已经在进程里面了,我们就可以用这个服务了
查看服务是否已经运行用 ps -ax | grep cron
3、crontab命令
查看该用户下的crontab服务是否创建成功, 用 crontab  -l
命令 
命令 which php 查看linux下安装的php的路径
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u
//设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls
>> /tmp/ls.txt
任务调度的crond常驻命令crond
是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此 
任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
crontab命令选项:
-u指定一个用户
    
-l列出某个用户的任务计划
    
-r删除某个用户的任务
    
-e编辑某个用户的任务
4、cron文件语法:
分    
小时   
日      
月      
星期    
命令
0-59  
0-23  
1-31  
1-12    
0-6    
command    
(取值范围,0表示周日一般一行对应一个任务)
记住几个特殊符号的含义:
“*”代表取值范围内的数字,
        
“/”代表”每”,
        
“-”代表从某个数字到某个数字,
        
“,”分开几个离散的数字
5、任务调度设置文件的写法
    
可用crontab
-e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件
    
具体格式如下:
     
Minute Hour Day Month Dayofweek  
command
     
分钟    
小时  
天    
月      
天每星期      
命令
    
每个字段代表的含义如下:
    
Minute            
每个小时的第几分钟执行该任务
    
Hour              
每天的第几个小时执行该任务
    
Day                
每月的第几天执行该任务
    
Month            
每年的第几个月执行该任务
    
DayOfWeek    
每周的第几天执行该任务
    
Command      
指定要执行的程序
    
在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选
字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。
    举例如下:
   
5      
*      
*          
*    
*    
ls            
指定每小时的第5分钟执行一次ls命令
   
30    
5      
*          
*    
*    
ls            
指定每天的 5:30 执行ls命令
   
30    
7      
8        
*    
*    
ls            
指定每月8号的7:30分执行ls命令
   
30    
5      
8        
6    
*    
ls            
指定每年的6月8日5:30执行ls命令
   
30    
6      
*          
*    
0    
ls            
指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,
以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30    
3    
10,20    
*    
*    
ls    
每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25    
8-11
*          
*    
*    
ls      
每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15  
*      
*          
*    
*    
ls        
每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30  
6    
*/10        
*    
*    
ls      
每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。 ]
每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件
50  
7      
*            
*    
*    
root    
run-parts    
/etc/cron.daily   [
注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]
6、 新增调度任务
新增调度任务可用两种方法:
      
1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
      
2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。
7、 查看调度任务
       
crontab -l //列出当前的所有调度任务
       
crontab -l -u jp  
//列出用户jp的所有调度任务
8、 删除任务调度工作
        
crontab -r   //删除所有任务调度工作
9、 任务调度执行结果的转向
      
例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中
           
30 5 * * * ls >/jp/test
2>&1
           
注:2>&1 表示执行结果及错误信息。
编辑/etc/crontab 文件配置cron 
   
cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次
/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。
   
用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是: 
SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 
HOME=/ //使用者运行的路径,这里是根目录 
# run-parts 
01  
*  
*  
*  
*    
root run-parts
/etc/cron.hourly        
//每小时执行/etc/cron.hourly内的脚本 
  02  
4  
*  
*  
*    
root run-parts
/etc/cron.daily        
//每天执行/etc/cron.daily内的脚本 
22  
4  
*  
*  
0    
root run-parts
/etc/cron.weekly      
//每星期执行 /etc/cron.weekly内的脚本 
42  
4  
1  
*  
*    
root run-parts
/etc/cron.monthly    
//每月去执行/etc/cron.monthly内的脚本 
 大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了
    例如:
    
1) 在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
    
2)直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务
         
11 2 21 10 * rm -rf /mnt/fb
5. 在linux下怎么让一个脚本定时运行
Linux中,周期执行的任务一般由cron这个守护进程来处理 ps -ef | grep cron 
cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
cron的配置文件称为“crontab”,是“cron table”的简写。

6. linux 脚本编程 定时关闭和打开程序
1、利用crontab 制定定时任务
2、编写定时关闭和打开程序的脚本或命令
3、crontab的用法
第1列分钟1~59
第2列小时1~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~6(0表示星期天)
第6列要运行的命令
下面是crontab的格式:
分 时 日 月 星期  要运行的命令或脚本
30 21 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示每晚的21:30重启apache
7. linux执行定时备份数据脚本
对tomcat目录,每隔4个小时进行一次备份,以当前时间进行命名
1.创建备份目录:
mkdir:创建目录
rmdir:删除目录

5.重启crontab:
service crond restart
!!!!(*^__^*) 嘻嘻……!!!!到这里就完了!
8. Linux设置定时任务
《使用PSSH批量管理Linux》 一文中,已经学习了使用pssh批量管理linux的技巧。而很多时候,我们需要定时执行一些任务,或者需要定时执行一些批量任务。因此,本文就来研究一下linux设置定时任务的方法。
  
 主要参考 Linux Crontab 定时任务 、 Linux定时任务Crontab命令详解  和  Linux 定时任务详解  。
  
 cron(crond)是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。linux系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。另外,由于使用者自己也可以设置计划任务,所以,linux系统也提供了使用者控制计划任务的命令:crontab命令。
  
 crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。
  
 linux下的任务调度分为两类,系统任务调度和用户任务调度。
  
 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。 /etc/crontab 文件就是系统任务调度的配置文件。
  
 用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在  /var/spool/cron/crontabs/ 目录中,其文件名与用户名一致。
  
 假设我们使用的是Ubuntu14.04.5 Server版,查看 /etc/crontab ,内容为:
  
 第一行SHELL变量指定了系统要使用哪个shell;第二行PATH变量指定了系统执行 命令的路径。
   接下来的命令格式为:
    m h dom mon dow user command 
   英文全拼为:
    minute hour day month week user commond 
  
 注意, /var/spool/cron 目录中的用户调度任务,没有user一项,因为文件名已经代表了user。
  
 在以上各个字段中,还可以使用以下特殊字符:
  
 crontab命令格式为:
    crontab [-u username] [file] [ -e | -l | -r ] 
  
 设置定时任务和时间紧密相关,如果服务器的时区时间设置和本地不同,就不能保证计划任务的正确执行。所以使用crontab的第一步,是调节好服务器的时间。
  
 下面参考 Ubuntu 16.04将系统时间写入到硬件时间BIOS ,对服务器时间进行调节。
  
 时间是有时区的,无论硬件时间还是操作系统时间。hwclock的时区在/etc/default/rcS文件中设置,里面有一个参数UTC,默认值为yes,表示使用UTC时区,如果设置为no,那表示使用osclock的时区。建议hwclock与osclock设置相同的时区,也就是no。
  
 1、查看服务器硬件时间
    sudo hwclock -r ,看到的时间格式为: Wed 23 May 2018 11:02:17 AM HKT -0.031663 seconds 
  
 2、查看服务器系统时间
    date ,看到的时间格式为: Wed May 23 11:02:41 HKT 2018 
  
 3、设置hwclock和osclock时区相同
    sudo vim /etc/default/rcS ,找到:
  
 修改为:
  
 4、将系统时间写入硬件时间
    sudo hwclock -w 
  
 5、修改系统时区
   osclock的时区配置文件为/etc/timezone,不建议直接修改配置文件。
  
 如果你想修改为CST时间,那么执行 sudo tzselect 命令时,选择Asia->China->Beijing Time即可,这时会提示使用Asia/Shanghai时区。(ubuntu和centos通用)
  
 6、设置即刻生效
   执行 date ,发现时区没有变化,依然是HKT。
  
  sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
    sudo ntpdate time.windows.com 
  
 如果执行ntpdate报错:ntpdate[18409]: no server suitable for synchronization found ,那么就换一个时间同步工具。
    sudo apt-get install rdate 
    sudo rdate -s time-b.nist.gov 
  
 再次执行 date ,发现时区已经变成了CST。
  
 7、硬件时间同步
    sudo hwclock -r ,发现硬件时间落后。
    sudo hwclock -w ,再次把系统时间写入硬件时间,同步完成。
  
 实例1:每分钟、每小时、每天、每周、每月、每年执行
  
 实例2:每小时的第3和第15分钟执行
    3,15 * * * * myCommand 
  
 实例3:在上午8点到11点的第3和第15分钟执行
    3,15 8-11 * * * myCommand 
  
 实例4:每隔两天的上午8点到11点的第3和第15分钟执行
    3,15 8-11 */2 * * myCommand 
  
 实例5:每周一上午8点到11点的第3和第15分钟执行
    3,15 8-11 * * 1 myCommand 
  
 实例6:每晚的21:30重启smb
    30 21 * * * /etc/init.d/smb restart 
  
 实例7:每月1、10、22日的4 : 45重启smb
    45 4 1,10,22 * * /etc/init.d/smb restart 
  
 实例8:每周六、周日的1 : 10重启smb
    10 1 * * 6,0 /etc/init.d/smb restart 
  
 实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
    0,30 18-23 * * * /etc/init.d/smb restart 
  
 实例10:每星期六的晚上11 : 00 pm重启smb
    0 23 * * 6 /etc/init.d/smb restart 
  
 实例11:每一小时重启smb
    0 * * * * /etc/init.d/smb restart 
  
 实例12:晚上11点到早上7点之间,每隔一小时重启smb
    0 23-7/1 * * * /etc/init.d/smb restart 
  
 实例13:每月的4号与每周一到周三的11点重启smb
    0 11 4 * mon-wed /etc/init.d/smb restart 
  
 实例14:一月一号的4点重启smb
    0 4 1 jan * /etc/init.d/smb restart 
  
 实例15:每小时执行/etc/cron.hourly目录内的脚本
    01 * * * * root run-parts /etc/cron.hourly 
   run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了。
  
 目标:每分钟查看一下ganglia的状态,并保存到/tmp/log/ganglia目录。
  
 1、创建/tmp/log/ganglia目录
    sudo mkdir -p /tmp/log/ganglia 
  
  sudo chmod a+w /tmp/log/ganglia 
  
 2、编辑crontab
    crontab -e ,选择编辑器为vim
  
 3、在crontab文件中添加一行
  
 4、查看crontab任务
    crontab -l ,看到任务已经添加成功。
  
 5、等待了五分钟,发现/tmp/log/ganglia目录下啥也没有。
    sudo service cron status ,状态正常。
    sudo /etc/init.d/cron restart ,重启cron试试。
   又等待了五分钟,发现/tmp/log/ganglia目录下依然空空。
  
 莫非是因为pssh没有使用绝对路径? whereis pssh ,找到pssh路径为 /usr/lib/pssh ,修改crontab为:
  
 然而,并没有用。
   还是查看下crontab日志吧!
  
 以下主要参考 Ubuntu下用crontab 部署定时任务 。
  
 1、编辑50-default.conf
    sudo vim /etc/rsyslog.d/50-default.conf 
  
 2、把cron前的井号去掉,也就是修改为:
  
 3、重启rsyslog服务
    sudo service rsyslog restart 
  
 4、重启crontab服务
    sudo service cron restart 
  
 5、查看crontab日志
    less /var/log/cron.log 
  
 果然发现了问题:
  
 也就是说,命令确实按时执行了,只不过没有执行完,被百分号截断了,导致log文件没有正常生成!
  
 修改crontab为:
  
 终于,log文件成功生成,nice!但是,文件内容是空的!因为, /usr/lib/pssh 是一个目录,不是pssh命令!真正的pssh命令是parallel-ssh,找到它的位置为 /usr/bin/parallel-ssh ,修改crontab:
  
 至此,问题圆满解决。
   实际使用的时候,一天获取一次ganglia的状态就够了,所以crontab改成:
  
 以上,每天执行一次定时任务,抓取ganglia的运行状态保存到日志文件中。紧接着,我们的目标是使用脚本检查当天的日志文件,如果发现ganglia运行异常,则产生一个错误日志。
  
 1、假设日志文件ganglia-20180524.log的内容为:
  
 2、参考 grep命令最经常使用的功能总结 ,编写脚本checkganglia.sh
  
 3、执行
    chmod a+x checkganglia.sh 
  
  ./checkganglia.sh 
  
 如果所有客户机的ganglia运行正常,就会输出All services are runing!。如果有的客户机ganglia进程不存在,则会在/tmp/log/ganglia/目录下生成当天的错误日志。
  
 4、设置定时运行
   因为日志的检查工作要在日志生成之后,所以时间上延后十分钟。
  
 上面的脚本,还有很多要改进的地方。比如有的客户机宕机了,上面的脚本检查不出来。比如有的客户机ganglia服务没有启动,那么具体是哪几台?针对这两个问题,下面进行改进。假设已经知道客户机的数量为10。
  
 参考 csplit命令 ,checkganglia.sh脚本修改为:
  
 以上脚本,实现了当客户机数量不为10的时候,进行报错;当客户机ganglia服务没有启动时,进行报错,并且筛选出所有没有启动ganglia的客户机。
  
 本文中,我们先学习了crontab的基础知识和基本用法。然后通过监控ganglia这一个应用场景来具体学习crontab的详细使用方法,包括查看cron日志的方法,crontab中命令转义的方法,定时执行脚本的方法,以及审阅日志脚本的编写和进阶。
  
 至此,还不够完美,因为我们需要每天登录管理机查看有没有错误日志。下一篇 Linux设置邮件提醒 中,我们将会研究linux设置邮件提醒的方法。审阅完日志后,如果脚本能够给我们发送一封邮件,告知我们审阅的结果,那么我们就不必再每天查看错误日志。
9. 请教Linux系统设置定时执行脚本问题crontab
跟据你的描述,感谢你的设置没有问题,像是测试方法不合适。
crontab是每分钟执行一次,所以不一定一到23点马上执行。
你多等一分钟看看。
