在 Unix 和类 Unix 系统(如 Linux)中,cron
是一个基于时间的任务调度程序,用于定期执行指定的任务。cron
任务通常以后台进程的方式运行,不需要特别指定。但是,为了确保你的任务在后台运行,并且不会因为关闭终端等原因而中断,可以在命令中使用一些技巧,比如使用 &
符号以及 nohup
命令。
以下是如何在 crontab
中配置一个任务,以确保它在后台运行的一个示例。
示例:定时执行一个脚本,并确保它在后台运行
假设你有一个脚本 /path/to/your/script.sh
,你希望它每天凌晨 1 点执行,并且在后台运行。
-
编辑
crontab
文件打开
crontab
编辑器:crontab -e
-
添加新的
cron
任务添加以下行以每天凌晨 1 点执行脚本,并确保它在后台运行:
0 1 * * * /path/to/your/script.sh > /dev/null 2>&1 &
解释:
0 1 * * *
:表示每天的 1:00 AM 触发任务。/path/to/your/script.sh
:这是你要执行的脚本的路径。> /dev/null 2>&1
:将标准输出和标准错误输出都重定向到/dev/null
,以避免输出干扰。&
:在脚本末尾添加这个符号,使脚本在后台运行。
示例脚本 script.sh
假设你的脚本 script.sh
内容如下:
#!/bin/bash
# 示例脚本,它会运行一段时间
echo "Script is starting..."
sleep 60 # 模拟一个需要运行一段时间的任务
echo "Script has finished."
确保脚本具有执行权限
确保你的脚本具有执行权限:
chmod +x /path/to/your/script.sh
验证 cron
服务是否正在运行
你可以使用以下命令来验证 cron
服务是否正在运行:
systemctl status cron
# 或者在某些系统上
service cron status
如果 cron
服务没有运行,你可以使用以下命令启动它:
systemctl start cron
# 或者在某些系统上
service cron start
通过以上配置,你的脚本将会每天凌晨 1 点在后台运行,并且不会因终端关闭等原因而中断。