原创

Linux自动化脚本

温馨提示:
本文最后更新于 2024年09月18日,已超过 226 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

linux开启定时任务

1.使用

  1. 在打开的文件中添加需要运行的定时任务。每一行表示一个定时任务,格式为分钟、小时、日期等字段后接要运行的命令或脚本路径。比如,我们想要每天上午9点运行一个名为"script.sh"的脚本,则可以写成这样: 0 9 * * * /path/to/script.sh。其中,第一列表示分钟数(0-59),第二列表示小时数(0-23),星号(*)表示不限制该字段取值范围。
  2. 保存并关闭文件。系统将自动安装新的定时任务。
  3. 若要查看当前用户已经设置了哪些定时任务,可以使用crontab -l命令。

注意事项

  • 定时任务脚本应该放在合适的位置,确保能被正常调用到。

  • 对于需要root权限才能运行的任务,可以使用sudo crontab -e命令来编辑root用户的定时任务。

  • 一般需要添加可执行权限

    chmod +x /path/to/script.sh
    

2.补充

安装crontab

yum install vixie-cron
yum install crontabs

vixie-cron软件包是cron的主程序;

crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

开启crontab服务

用以下的方法启动、关闭这个cron服务:

  • service crond start //启动服务

  • service crond stop //关闭服务

  • service crond restart //重启服务

  • service crond reload //重新载入配置

  • 查看crontab服务状态:service crond status

  • 手动启动crontab服务:service crond start

  • 查看crontab服务是否已设置为开机启动,执行命令:ntsysv

加入开机自动启动:

chkconfig –level 35 crond on

另外顺带介绍下ntsysv和chkconfig命令:

关于ntsysv命令是类图形界面管理模式来设置开机启动,需要先安装才可以使用,yum install -y ntsysv安装好之后只需要运行一个ntsysv即可出现一个类似图像化的管理界面。

上下键:可以在中间的方框当中,在各个服务之间移动;

空格键:可以用来选择你所需要的服务,[*]表示开起启动;

tab键:可以在方框、OK、Cancel之间移动;

[F1]键:可以显示该服务的说明。

关于chkconfig命令行的形式设置是否开机自启动或者查询某个服务6个开机级别的运行情况。

设置开机自动启动crond服务:

chkconfig crond on

查看各个开机级别的crond服务运行情况

chkconfig –list crond

crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

可以看到2、3、4、5级别开机会自动启动crond服务

取消开机自动启动crond服务:

chkconfig crond off

3.设置需要执行的脚本

新增调度任务可用两种方法:

1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。

2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。

crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务

查看调度任务

crontab -l //列出当前的所有调度任务

crontab -l -u jp //列出用户jp的所有调度任务

删除任务调度工作

crontab -r //删除所有任务调度工作

直接编辑 vim /etc/crontab

这个文本解释的已经比较直观了,其中

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

注意

* 1 命令表示是每小时之内的每一分钟都执行。

必须指定在每个小时的第几分钟执行,也就是说第一个*号必须改成一个数值。

因为*号表示的就是每一分钟。

另外小时位的/1和没有区别,都是每小时一次。

如果是设置*/2,实际上是能被2整除的小时数而不是从定时设置开始2小时后执行,比如9点设的到10点就会执行。

最后可能会遇到下面这个问题

root用户下 输入 crontab -l 显示

no crontab for root 例如:

 crontab -l

no crontab for root

这个问题非常简单,同样在 root 用户下输入 crontab -e

按 Esc 按: wq 回车

在输入 crontab -l 就没有问题了

主要原因是由于这个liunx服务器 第一次使用 crontab ,还没有生成对应的文件导致的,执行了 编辑(crontab -e)后 就生成了这个文件

2.linux重启时自动执行脚本

将脚本添加到/etc/rc.d/rc.local末尾

echo "/xx/xx.sh"  >>  /etc/rc.d/rc.local

添加可执行权限

chmod +x /xx/xx.sh
chmod +x /etc/rc.d/rc.local
正文到此结束