① linux 通过 crontab 来定时执行脚本——固定时间/固定频率
使用 cron 守护进程管理任务调度,crontab 作为配置文件,记录命令与执行时间。需先检查当前是否有运行任务,若无则通过以下步骤创建与添加任务:
新任务示例:
*/5 * * * * bash路径/file_name.sh >> 路径/tmp_log.txt
执行步骤:
1. 创建 crontab 配置文件,内容为:
*/5 * * * * bash路径/file_name.sh
表示每5分钟执行一次 file_name.sh。
2. 添加 cron 任务:
crontab 路径/cron_test.cron >> 路径/cron_log.txt
注意:Win 上路径不可用,否则会导致 LF char x'0d' 错误。
3. 验证添加:
$ crontab -l
4. 配置文件编写规范:
* * * * *command_statement
星号对应时间元素,合法值为分钟1-59、小时0-23、日期1-31、月份1-12、周0-6。
第1列表示分钟,每1分钟用*或*/1表示。
第2列表示小时。
第3列表示日期。
第4列表示月份。
第5列表示星期。
第6列表示要运行的命令。
5. 命令说明:
crontab -e:修改 crontab 文件,文件不存在时自动创建。
crontab -l:显示 crontab 文件内容。
crontab -r:删除 crontab 文件。
crontab -ir:删除 crontab 文件前提醒用户。
查看 cron 状态:sudo service cron status
开启 cron:sudo /etc/init.d/cron start
关闭 cron:sudo /etc/init.d/cron stop
重启 cron:sudo /etc/init.d/cron restart
② linux定时任务shell脚本开头如下 cd ~ . .bash_profile 定时任务执行后提示找不到.bash_profile什么情况
.bash_profile 文件确实是一个隐藏文件,它通常位于用户的主目录下。如果你在执行定时任务时遇到找不到 .bash_profile 的问题,可以先尝试直接运行 1.sh 脚本,即去掉 ./ 前缀,看看是否能执行成功。如果这样可以执行,说明问题出在 1.sh 脚本执行过程中改变了当前工作目录。
检查 1.sh 脚本中的路径设置,确保脚本中没有改变当前目录的命令,如 cd 命令。如果脚本中有这样的命令,可以考虑将这些路径修改为绝对路径,或者在脚本开头记录当前工作目录并重新切换回该目录。
此外,可以尝试在 1.sh 脚本中添加一些调试信息,比如使用 echo 命令输出当前工作目录,以便检查脚本执行时的具体路径。这样可以更直观地了解脚本执行过程中当前路径的变化情况。
如果你确定脚本中没有改变路径的命令,但依然遇到问题,可以考虑检查定时任务的配置文件,确认定时任务是否正确指向了 1.sh 脚本。通常,定时任务的配置文件会指定脚本的绝对路径或相对路径,确保这里没有误操作。
最后,确保你的定时任务配置文件中有适当的环境变量设置,以确保脚本能够正确运行。你可以在定时任务配置文件中添加一些环境变量设置命令,如 export 命令,以确保脚本运行时能够访问到必要的环境变量。
总结来说,遇到找不到 .bash_profile 的问题时,首先要确保脚本本身没有改变路径,其次检查定时任务配置文件和环境变量设置是否正确。通过调试信息和环境变量的设置,可以更好地定位问题所在。
③ Linux定时任务之Crontab实现脚本自动化运行linux定时任务crontab
Linux定时任务实现脚本自动化运行可以利用Crontab来实现。Crontab是Linux系统下的定时触发功能,其核心是使用一个名为crontab的服务来实现定时执行任务。
Crontab和很多其他Linux服务一样,有一个专门的配置文件/etc/crontab,它用来定义定时任务的触发时间及脚本执行地址等参数。 以下是脚本的格式:
{minute} {hour} {day of month} {month} {day of week} {command}
其中,minute表示分钟,hour表示小时,day of month表示日,month表示月,day of week表示星期天到星期六(从0到7),command表示将要运行的命令。
例如,要将定时任务设置为每天早上6点运行脚本/home/script.sh,可以将crontab的设置写为:
0 6 * * * /home/script.sh
记住,每一行表示一条定时任务,一行命令后面可以放置多个参数,以空格分隔,比如:
0 6 * * * /home/script.sh param1 param2
如果需要在指定时间运行多条指令,可以在其中一条指令中把其他指令嵌入,比如:
0 6 * * * /bin/bash /home/script1.sh;/home/script2.sh
记住,Crontab无法执行动态通配符,请确保定时任务的指令仅按照以上格式书写。
最后,使用以下命令启用定时任务:
$ crontab /etc/crontab
这样就可以使用crontab实现脚本的自动化定时运行了,非常方便。