Ubuntu 18.04下如何让webhook保持持续监听状态?
Ubuntu 18.04下如何让webhook保持持续监听状态?
我之前也碰到过完全一样的问题!在Ubuntu 18.04上要让webhook一直后台运行不中断,有几个实用的方案,我给你详细说说:
方法1:使用nohup(临时快速方案)
这是最简单的临时解决办法,能让程序脱离当前终端运行,就算你关闭SSH会话也不会中断。
直接运行这条命令就行(记得把0.0.0.0换成你的VPS公网IP):
nohup /usr/bin/webhook -hooks /root/webhooks/hooks.json -ip "你的公网IP" -verbose > /var/log/webhook.log 2>&1 &
nohup:让程序忽略终端退出信号,持续运行> /var/log/webhook.log:把程序的正常输出写入日志文件,方便后续排查问题2>&1:把错误输出也同步到同一个日志文件里&:让程序在后台运行
如果需要停止webhook,可以先找到进程ID,再杀掉:
# 查找webhook进程 ps aux | grep webhook # 替换成找到的PID,比如1234 kill 1234
方法2:使用screen(适合需要偶尔查看会话的场景)
如果你需要偶尔回到webhook的运行会话查看输出,screen这个终端复用工具就很合适。
- 先安装screen:
apt update && apt install screen -y
- 创建一个名为
webhook的会话:
screen -S webhook
- 在这个会话里运行你的webhook命令:
/usr/bin/webhook -hooks /root/webhooks/hooks.json -ip "你的公网IP" -verbose
- 按下
Ctrl+A+D组合键,就能脱离这个会话了——此时webhook会在后台继续运行,就算你关闭SSH也不受影响。 - 之后如果想回到会话查看输出,运行:
screen -r webhook
如果会话意外断开,用screen -x webhook重新连接即可。要停止webhook的话,回到会话按Ctrl+C,或者用kill进程的方式也行。
方法3:使用systemd服务(生产环境最推荐,稳定可靠)
这是最适合生产环境的方案——systemd会自动监控webhook进程,一旦进程挂掉会自动重启,还能设置开机自启,彻底解决中断问题。
- 创建systemd服务文件:
nano /etc/systemd/system/webhook.service
- 粘贴以下内容(注意替换
你的公网IP为实际地址,路径如果有变动也要对应修改):
[Unit] Description=Git Webhook 自动拉取服务 After=network.target [Service] Type=simple User=root ExecStart=/usr/bin/webhook -hooks /root/webhooks/hooks.json -ip "你的公网IP" -verbose Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
Description:服务的描述,方便识别After=network.target:确保网络启动后再启动webhook服务User=root:用root用户运行(和你之前的操作一致)ExecStart:就是你要运行的webhook命令Restart=always:只要进程终止就自动重启RestartSec=5:重启间隔5秒,避免频繁重启
- 保存并退出nano(按
Ctrl+O,回车确认,再按Ctrl+X) - 重新加载systemd配置:
systemctl daemon-reload
- 启动webhook服务:
systemctl start webhook
- 设置开机自启:
systemctl enable webhook
- 查看服务运行状态:
systemctl status webhook
如果显示active (running)就说明成功了。
要查看服务日志的话,运行:
journalctl -u webhook -f
停止服务的话用:
systemctl stop webhook
个人最推荐用systemd方案,稳定性拉满,完全不用操心进程中断的问题!
备注:内容来源于stack exchange,提问作者HeytalePazguato
相关产品推荐
相关产品推荐

