nohup 命令常被用于实现后台运行,但其核心作用更为纯粹——确保进程不会因用户退出登录而终止。它通过屏蔽 SIGHUP 信号,让进程在终端关闭后依然保持活跃,这就是“no hang up”(不挂断)的真正含义。

不过,单靠 nohup 本身无法实现周期性任务调度,它只负责保障进程持续运行。若要实现定时调度,通常需要与 cron 这类工具配合使用。下面介绍两种常见的组合方式,帮助您更灵活地管理任务。
配合
cron实现定时任务调度在终端中运行
crontab -e编辑当前用户的 cron 任务表,然后添加如下配置行:0 * * * * nohup /path/to/your/script.sh > /dev/null 2>&1 &该命令的含义是:每小时的第0分钟,通过
nohup启动脚本,并将标准输出和错误输出均重定向到/dev/null,同时使用&将进程置于后台。这样,即使 cron 任务执行环境退出,脚本也不会被中断。利用
sleep构建简易循环调度如果您不想依赖
cron,也可以直接编写循环实现间隔执行:while true; do nohup /path/to/your/script.sh > /dev/null 2>&1 & sleep 60; done这个
while循环会持续运行,每次启动脚本后等待60秒再启动下一次。注意,每个脚本实例都是独立的后台进程,互不干扰,适合对执行时间间隔要求不严格的场景。
当然,以上仅为基础组合思路。在实际生产环境中,您还需要考虑日志管理、进程守护、异常退出后的自动重启等细节。不过,将 nohup 与调度工具结合,确实是解决“退出后任务继续运行”这一痛点的标准做法。
