Linux crontab 命令格式与实际操作

时间:2022-11-24 07:57:45

0x00前言

  我们都知道在linux下,有时需要执行定时或者周期性任务,Linux crontab  正是能够满足这些需求。例如我们需要每天记录某个进程的日志到某个文件夹,或者每天凌晨3点自动重启系统或者其他任务,这时掌握 crontab 的命令,便能游刃有余了。我们在这里是基于debian 系统进行的(我本人的机器是KALI-LINUX)

0x01 命令

crontab [-u user] file

crontab [ -u user ] [ -i ] { -e | -l | -r }
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)

0x02 创建一个定时任务

1 我这里使用gedit 创建一个文件

root@kali:~# gedit batchaccess#batchaccess 这个是文件名

2 在gedit 界面的底部, 我们可以看见 " Plain  Text "  , 点击这个,在弹出的搜索框中,输入" sh" , 然后我们在键盘敲击"  Enter  " 。 这样一来我们就可以确定文件格式了

3 在gedit  正文当中 输入" 30 12 31 5  * locate update " , 之后点击 gedit 界面的底部中 " Save" , 这样一来,我们系可以保存文件了

4 ” 30 12 31 5  * locate update “  这个东西有一定格式

crontab文件的格式:M H D m d cmd.

crontab文件的格式:分钟,小时,日期,月份 星期 命令 # 如果数值为空 则用 *  代替。例如 * * * * * cmd 

上面的命令比较抽象,还是看看下面的命令:

30 12 31 5  * locate update  # 这命令表示在每年的 5 月 31日 12点30分执行 命令 " locate update "

第1列分钟,范围为 1~59
第2列小时, 范围为1~23(0表示子夜)
第3列日,     范围为 1~31 
第4列月,范围为 1~12
第5列星期,范围为 0~6(0表示星期天)
第6列要运行的命令,例如 locate update   

5 更多关于任务的举例 

#注意每行为一个任务,# 后面的是任务的解释说明, 所以我们敲命令的时候要把 # 后面的内容省略。

* * * * * locate update# 每1分钟执行一次 " locate update " 命令

3,15 * * * * locate update # 每小时的第3和第15分钟执行 " locate update " 命令
3,15 8-11 * * * locate update  # 每天上午8点到11点的第3和第15分钟执行 " locate update " 命令

3,15 8-11 */2  *  * locate update # 每隔两天的上午8点到11点的第3和第15分钟执行" locate update " 命令

3,15 8-11 * * 1#每周一上午8点到11点的第3和第15分钟执行 " locate update " 命令

30 21 * * * /etc/init.d/smb restart#每天的21:30重启smb

45 4 1,10,22 * * /etc/init.d/smb restart# 每月1、10、22日的4 : 45重启smb

* 23-7/1 * * * /etc/init.d/smb restart#每天23点到7点之间,每隔一小时重启smb


0x03 具体使用

root@kali:~# crontab -u root /root/batchaccess#使用root用户定时执行 /root/batchaccess 这个文件

root@kali:~# crontab -u root -l# 列出 root用户的定时任务

root@kali:~# crontab -u root -r# 清空 root用户的定时任务

root@kali:~#  crontab -u root -i -r # 在清空 root用户的定时任务之前,需要用户手动确认是否清空


0x04 小提示

1 root@kali:/# cat /var/log/syslog |grep "siege"  #查看执行了命令"siege"

或者 使用下面的语句

root@kali:/# locate siege #在出现的目录中选择 "/var/log/siege.log" , 一般而言都是" /var/log/ "目录下
root@kali:/# leafpad /var/log/siege.log 

2 我们首先使用 gedit 这个图形操作界面的文本编辑器,并且在" 0x02 创建一个定时任务 "  中的第二步 指定了 " sh " 格式。这个能够避免 " new crontab file is missing newline before EOF, can't install." 这些格式问题

3 在定时任务中命令" cmd " 我们也可以采用绝对路径形式,例如执行" ls ", 我们用 "  /bin/ls :" 代替

4 当crontab失效时,可以尝试以下语句,以便解决问题
root@kali:~# /etc/init.d/cron restart

root@kali:~# service cron restart

4 其他问题,我们要学会根据自己的系统进行搜索。例如百度搜索,必应搜索,Google等,对于搜出来的结果,多看几页的结果,这几页的搜索结果基本上能够帮助我们解决很多问题了


0x05 总结

1 我们以一个 " crontab “  命令为例,学习了一个linux命令

2 我们以此作为一个实例,可以去学习其他命令,例如netstat , top 等等

3 重点是要有耐心,有时学习并熟悉一个命令或者需要一个小时或几个小时或者一天,甚至是几天!!


欢迎大家分享更好的思路,热切期待^^_^^ !!!