我打包了我们软件的Debian文件 . 现在需要启动一个 .sh
脚本来运行程序/软件 . 这个 .sh
脚本实际上运行了Django服务器和更多服务 .
要实际启动此应用程序,我们需要在菜单中运行 .desktop
文件 . 菜单中的 .desktop
文件与上面提到的 .sh
脚本相关联 . 这会提示终端并要求输入密码 . 一旦给出密码,这将启动服务并且终端保持活动状态 .
要完全关闭此服务,我们需要通过查找进程的PID并从终端终止它来终止进程 . 但是现在我想在关闭终端时杀死这个过程 .
我怎样才能做到这一点?
2 回答
如果您正在尝试创建服务(某些程序在后台运行),您应该创建使用系统的机制 . 传统的一个,将是
/etc/init.d/
中的一个脚本,更现代的方法是使用systemd
.例如 . 一个文件
/etc/systemd/system/myservice.system
然后,您可以使用以下命令启动/停止服务(以root身份):
RESP .
您可以拥有服务的依赖关系链,因此启动
myservice
将自动启动myhelper1
和myhelper2
.查看联机帮助页systemd.unit.5
当控制终端关闭时,前台进程组应该收到
SIGHUP
信号 . 如果您的目标进程已经预期在前台,则可能是它正在捕获或忽略SIGHUP
(接收该信号的进程的默认行为是终止) .