linux crontabは毎秒実行を実現
4539 ワード
linux crontabはタイミングタスクを実現するのに非常に便利です
基本形式:****command時分割日月周コマンド1列目は分1~59毎分*または*/1は2列目は時間1~23(0は0点)3列目は日付1~31、4列目は月1~12、5列目は日0~6(0は日)6列目は実行するコマンド
crontabファイルのいくつかの例:毎晩21:30にapacheを再起動します. crontab-eで を実現
2.shellスクリプトで実装
crontabを実行している場合はコマンドが見つからない場合がよくありますが、その場合はpathの問題でpathを作成すればよいのです
例えば
CRONTAB(1) Cronie Users’ Manual CRONTAB(1)
NAME
crontab - maintain crontab files for individual users
SYNOPSIS
crontab [-u user] file
crontab [-u user] [-l | -r | -e] [-i] [-s]
DESCRIPTION
Crontab is the program used to install, remove or list the tables used to drive the cron(8) daemon. Each user can have their own crontab, and though these are files in /var/spool/
, they are not intended to be edited directly. For SELinux in mls mode can be even more crontabs - for each range. For more see selinux(8).
The cron jobs could be allow or disallow for different users. For classical crontab there exists cron.allow and cron.deny files. If cron.allow file exists, then you must be listed
therein in order to be allowed to use this command. If the cron.allow file does not exist but the cron.deny file does exist, then you must not be listed in the cron.deny file in
order to use this command. If neither of these files exists, only the super user will be allowed to use this command. The second option is using PAM authentication, where you set
up users, which could or couldn’t use crontab and also system cron jobs from /etc/cron.d/.
The temporary directory could be set in enviroment variables. If it’s not set by user than /tmp is used.
OPTIONS
-u Append the name of the user whose crontab is to be tweaked. If this option is not given, crontab examines "your" crontab, i.e., the crontab of the person executing the com-
mand. Note that su(8) can confuse crontab and that if you are running inside of su(8) you should always use the -u option for safety’s sake. The first form of this command
is used to install a new crontab from some named file or standard input if the pseudo-filename "-" is given.
-l The current crontab will be displayed on standard output.
-r The current crontab will be removed.
-e This option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables. After you exit from the editor, the modified
crontab will be installed automatically.
-i This option modifies the -r option to prompt the user for a ’y/Y’ response before actually removing the crontab.
-s It will append the current SELinux security context string as an MLS_LEVEL setting to the crontab file before editing / replacement occurs - see the documentation of
MLS_LEVEL in crontab(5).
SEE ALSO
crontab(5),cron(8)
FILES (crontab )
/etc/cron.allow
/etc/cron.deny
STANDARDS
The crontab command conforms to IEEE Std1003.2-1992 (‘‘POSIX’’). This new command syntax differs from previous versions of Vixie Cron, as well as from the classic SVR3 syntax.
DIAGNOSTICS
A fairly informative usage message appears if you run it with a bad command line.
/var/log/cron
基本形式:****command時分割日月周コマンド1列目は分1~59毎分*または*/1は2列目は時間1~23(0は0点)3列目は日付1~31、4列目は月1~12、5列目は日0~6(0は日)6列目は実行するコマンド
crontabファイルのいくつかの例:毎晩21:30にapacheを再起動します.
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
毎月1、10、22日45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
毎朝6時10分10 6 * * * date
2 2時間毎0 */2 * * * date
夜11時から朝8時までの2時間毎に、朝8時0 23-7/2,8 * * * date
毎月の4日と毎週月曜日から水曜日の朝11時0 11 4 * mon-wed date
朝4時0 4 1 jan * date
crontabの最小次元は分で、秒レベルを実現する方法は2種類あります * * * * * /bin/date >>/tmp/date.txt
* * * * * sleep 10; /bin/date >>/tmp/date.txt
* * * * * sleep 20; /bin/date >>/tmp/date.txt
* * * * * sleep 30; /bin/date >>/tmp/date.txt
* * * * * sleep 40; /bin/date >>/tmp/date.txt
* * * * * sleep 50; /bin/date >>/tmp/date.txt
2.shellスクリプトで実装
vim test.sh
#!/bin/bash
for((i=1;i<=5;i++));
do
/bin/date >>/tmp/date.txt
sleep 10
done &
crontab -e
* * * * * test.sh
crontabを実行している場合はコマンドが見つからない場合がよくありますが、その場合はpathの問題でpathを作成すればよいのです
例えば
crontab -e
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
* * * * * test.sh