我打包了我们软件的Debian文件。现在需要启动.sh
脚本来运行程序/软件。这个.sh
脚本实际上运行了Django服务器和更多服务。
要实际启动此应用程序,我们需要在菜单中运行.desktop
文件。菜单中的.desktop
文件与上面提到的.sh
脚本相关联。这会提示终端并要求输入密码。一旦给出密码,这将启动服务并且终端保持活动状态。
要完全关闭此服务,我们需要通过查找进程的PID并从终端终止它来终止进程。但现在我想在关闭终端时杀死这个过程。
我该怎么做?
答案 0 :(得分:0)
如果您正在尝试创建服务(某些程序在后台运行),您应该创建使用系统的机制。
传统的方法是/etc/init.d/
中的一个脚本,更现代的方法是使用systemd
。
E.g。文件/etc/systemd/system/myservice.system
[Unit]
Description=My Service
[Service]
Type=simple
# you could run the service as a special user
#User=specialuser
WorkingDirectory=/var/lib/myservice/
# execute this before starting the actual script
#ExecStartPre=/usr/lib/myservice/bin/prestart.sh
ExecStart=/usr/bin/myservice
Restart=on-failure
[Install]
WantedBy=multi-user.target
然后您可以使用以下方式启动/停止服务(以root用户身份):
systemctl start myservice
RESP。
systemctl stop myservice
您可以拥有服务的依赖关系链,因此从myservice
开始会自动启动myhelper1
和myhelper2
。
查看联系人页面systemd.unit.5
答案 1 :(得分:0)
当控制终端关闭时,前台进程组应该收到SIGHUP
信号。如果您的目标进程已经预期在前台,则可能是它正在捕获或忽略SIGHUP
(接收该信号的进程的默认行为将终止)。