利用周末时间写了一个简单的后台推送服务,需要一直保持在后台跑。搜了网上的一些方案,比如
1.写一个sh脚本,在运行的命令最后加一个”&”,虽然这个方法可以保持后台运行,但是只要关掉终端,这个服务也会被kill。
2.使用nohup这个命令,nohup的意思是忽略SIGHUP信号。
- SIGHUP信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 也就是关闭终端的时候发出的,这个信号的默认操作为终止进程,因此前台进程组和后台有终端输出的进程就会中止。
- 如果用nohup运行脚本的话,需要用kill命令来终止,比较麻烦。
最后发现用systemctl来管理更加方便,遵循以下步骤就能一劳永逸。
1.写一个service文件,总共分三个部分[Unit]、[Service]和[Install]
1 | #[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别 |
2.将写好的service文件放到/usr/lib/systemd/system
3.记好以下几个命令就行了
1 |
|
4.还能实现开机自启动
1 | #在开机启用服务 |