Total Pageviews

Sunday, 14 May 2017

crontab里面的代码的含义

输入 apt-get install -y cron 安装。

    crontab -e

输入下面一行代码,保存并退出该文件。(下面一行代码的意思是每天晚上3点0分重启tinyproxy)
0 3 * * * /etc/init.d/tinyproxy restart


crontab使用方法简单解释一下:

添加的命令需要一行一个,格式是分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-7) 要执行的命令


如果要做成每三天的11点59分重启一下,就看下面这个代码(“*/”代表“每”)

    59 11 */3 * * /etc/init.d/tinyproxy restart

注意:日期中,如果某月没有31日,就不会执行;星期中,0和7都代表星期日;如果不需要设置的值,请用“*”;所有数值都需要是整数.

相关帖子:
http://briteming.blogspot.com/2013/02/cron.html
http://briteming.blogspot.com/2013/04/cron.html

---------------

Cron中的最常见错误


一个常见的错误是,命令行双引号中使用%时,未加反斜线\,例如:
# 错误的例子:
1 2 3 4 5 touch ~/error_`date "+%Y%m%d"`.txt
在守护进程发出的电子邮件中会见到错误信息:
/bin/sh: unexpected EOF while looking for `'''''''
# 正确的例子:
1 2 3 4 5 touch ~/right_$(date +\%Y\%m\%d).txt

# 使用单引号也可以解决问题:
1 2 3 4 5 touch ~/error_$(date '+%Y%m%d').txt

# 使用单引号就不用加反斜线了。这个例子会产生这样一个文件 ~/error_\2006\04\03.txt
1 2 3 4 5 touch ~/error_$(date '+\%Y\%m\%d').txt
下例是另一个常见错误:
# Prepare for the daylight savings time shift
59 1 1-7 4 0 /root/shift_my_times.sh
初看似要在四月的第一个星期日早晨1时59分运行shift_my_times.sh,但是这样设置不对。
与其他域不同,第三和第四个域之间执行的是“或”操作。所以这个程序会在4月1日至7日以及4月余下的每一个星期日执行。
这个例子可以重写如下:
# Prepare for the daylight savings time shift
59 1 1-7 4 * test `date +\%w` = 0 && /root/shift_my_times.sh
另一个常见错误是对分钟设置的误用。下例欲一个程两个小时运行一次:
# adds date to a log file
* 0,2,4,6,8,10,12,14,16,18,20,22 * * * date >> /var/log/date.log
而上述设置会使该程序在偶数小时内的每一分钟执行一次。正确的设置是:
# runs the date command every even hour at the top of the hour
0 0,2,4,6,8,10,12,14,16,18,20,22 * * * date >> /var/log/date.log
# an even better way
0 */2 * * * date >> /var/log/date.log
--------
 
 

crontab 的一点小问题: Temporary crontab no longer owned by you

 
某台服务器上面的crontab突然不能用了,表现为某个用户的crontab 临时文件不能读取,

Temporary crontab no longer owned by you
发现crontab -e的时候,在/tmp下面生成的临时文件有问题:
drwx—— 2 root crontab 4.0K 2009-01-05 14:27 crontab.TRVZy0
变成root用户的了,难怪普通用户读不到。
查了n久没有啥发现,然后无意中ls -alh /usr/bin/crontab
发现:
-rwsr-sr-x 1 root crontab 26K Dec 20 2006 /usr/bin/crontab
在owner一栏多了一个SUID。。。然后
chown u-s /usr/bin/crontab
ls -alh /usr/bin/crontab
-rwxr-sr-x 1 root crontab 26K Dec 20 2006 /usr/bin/crontab
去掉SUID以后,crontab就一切正常了。。。
drwx—— 2 ssmax crontab 4.0K 2009-01-05 14:29 crontab.fdzKZk
SUID、GUID、粘滞位一直都没有留意,好像是基础课的时候学到的,但是之后都一直都没有怎么用到,所以很容易就忘记了。
各个位的定义:man chmod
The letters ‘rwxXstugo’ select the new permissions for the affected users: read (r), write (w), execute (or access for directories) (x), execute only if the file is a directory or already has execute permission for some user (X), set user or group ID on execution (s), sticky (t), the permissions granted to the user who owns the file (u), the permissions granted to other users who are members of the file’s group (g), and the permissions granted to users that are in neither of the two preceding categories (o).
 

No comments:

Post a Comment