Linux使用nohup方法和systemd服务
零:前言
以下内容基于ubuntu系统
在服务器上使用&后台执行frp服务端程序后,一旦断开ssh的连接,frp服务端程序会断掉,所以需要找到能够长时间运行程序的方法,以下提供了两种方法,用户在退出登录后也能稳定运行。
一、nohup方法
nohup能够实现用户退出登录后继续执行程序
- 忽略挂断(SIGHUP 信号):当用户退出终端(例如关闭 SSH 连接)时,终端会向其运行的所有进程发送一个
SIGHUP信号,通常这会导致进程终止。nohup命令可以忽略这个信号,使得进程即使在终端关闭后也能继续运行。- 将输出重定向到文件:
nohup命令会将命令的标准输出(stdout)和标准错误(stderr)重定向到nohup.out文件中,除非指定了其他文件。
例如:
nohup ./frps -c frps.ini &
这样能保证退出登录后,程序依然在后台运行,并且程序输出内容会重定向到nohup.out日志文件
重新指定重定向日志文件:
nohup frps -c /path/to/frps.ini > /xxpath/custom_output.log 2>&1 &
符号>可以将输出重定向到一个自定义日志文件中
符号2>&1表示将标准错误也重定向到标准输出,也就是同一个日志文件中
二、添加新的systemd服务
为frps程序直接创建一个systemd服务,只需要在/etc/systemd/system/文件夹中添加一个frps相关文件frps.service
sudo vim /etc/systemd/system/frps.service
创建并打开文件后写入如下内容:
ExecStart参数是指你的服务要执行的操作,例子中只用来启动frps程序,根据自己的需求更换即可
[Unit]
Description=FRP Server Service
After=network.target
[Service]
Type=simple
ExecStart=/home/ubuntu/server_app/frp/frp_0.48.0_linux_amd64/frps -c /home/ubuntu/server_app/frp/frp_0.48.0_linux_amd64/frps.ini
Restart=on-failure
[Install]
WantedBy=multi-user.target
添加完毕后依次执行如下命令
#服务持久化,设置服务在系统启动时自启动
sudo systemctl enable frps.service
#立即启动服务
sudo systemctl start frps.service
服务启动后,可以使用如下命令查看状态,其中也能查看到服务是否启动失败
sudo systemctl status frps.service
若要详细分析失败原因,可以查看对应的服务日志
journalctl -u frps.service
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
keeshow!
喜欢就支持一下吧