让一个程序在 Linux 中一直运行
要让一个程序在 Linux 中一直运行,可以使用多种方法,取决于你想要的具体行为。这些方法包括使用循环、守护进程、nohup、systemd等。下面是几种常见的方法:
1. 使用 while true 循环
如果你想让一个程序在终端中一直运行,可以将它放在一个无限循环中:
while true; do
./your_program # 替换成你的程序
done
这个脚本会一直运行 your_program,每次程序执行完毕后会立刻重新启动。如果想在程序之间添加一点延迟,可以使用 sleep 命令:
while true; do
./your_program # 替换成你的程序
sleep 1 # 暂停 1 秒
done
2. 使用 nohup 后台运行
nohup 命令可以让程序在后台运行,并且即使关闭终端,程序也不会停止运行:
nohup ./your_program &
nohup:忽略挂断信号,使程序在退出终端后继续运行。&:把程序放在后台运行。
输出会被默认重定向到 nohup.out 文件,你可以通过 tail -f nohup.out 查看程序的输出。如果想指定输出文件,可以这样做:
nohup ./your_program > output.log 2>&1 &
这里,output.log 是输出文件,2>&1 表示将标准错误输出重定向到标准输出。
3. 使用 cron 任务定时运行程序
如果你的程序需要在一定间隔内自动运行,可以使用 cron 定时任务来实现。例如,想要每分钟运行一次程序:
crontab -e
然后在 crontab 文件中添加一行:
* * * * * /path/to/your_program
这将使程序每分钟运行一次。cron 是非常灵活的调度工具,允许你指定任意时间间隔。
4. 使用 systemd 创建守护进程
如果你需要程序在系统启动时自动运行,并且一直保持运行状态(即守护进程),可以通过创建一个 systemd 服务来实现。这种方法适用于需要长期运行的服务类程序。
创建一个 systemd 服务文件,例如 /etc/systemd/system/your_program.service:
[Unit]
Description=Your Program Service
After=network.target
[Service]
ExecStart=/path/to/your_program
Restart=always # 程序崩溃时自动重启
[Install]
WantedBy=multi-user.target
然后启用并启动该服务:
sudo systemctl daemon-reload # 重新加载 systemd 配置
sudo systemctl enable your_program # 开机自动启动
sudo systemctl start your_program # 启动服务
此时,your_program 将作为后台守护进程持续运行,系统启动时也会自动启动。
5. 使用 screen 或 tmux 运行长期任务
如果你希望能够手动控制程序的运行,但又希望关闭终端时保持程序继续运行,可以使用 screen 或 tmux 这类终端多路复用工具。
使用 screen 运行程序:
screen -S my_session # 启动一个新的 screen 会话
./your_program # 在 session 中运行程序
使用 Ctrl+A D 可以将程序送入后台继续运行,之后你可以用 screen -r my_session 恢复会话。
tmux 的使用方式类似,可以灵活管理多个终端会话。
根据你的需求,上述方法能够满足不同场景下让程序持续运行的要求,选择合适的方式即可。
本文来自博客园,作者:海_纳百川,转载请注明原文链接:https://www.cnblogs.com/chentiao/p/18508035,如有侵权联系删除

浙公网安备 33010602011771号