bash - 允许其他用户控制进程

标签 bash sh

我有一个在我们的服务器上运行的 sh 脚本。 它是从另一个脚本中使用 nohup 启动的,以便我可以轻松关闭 session 并且它仍然运行

主脚本(将启动此脚本)也是一个 sh 脚本。并且可以使用两个参数来执行:

--start (will start application)
--stop (will stop it using kill PID)

但是由于应用程序是由我启动的,因此其他人(除了 root 之外)都无法停止已经运行的实例或重新启动它。

所以我更多地考虑将所有者更改为nobody。这会有帮助吗?如果是,那该怎么办呢?

最佳答案

设置脚本在发生某些事件时自行关闭,而不是运行直到被杀死。然后让主脚本在 --stop 处触发该事件(该事件可以是简单的事件,例如创建特定文件,也可以是更复杂的事件,例如向脚本定期读取的 fifo 写入命令)。这样,无论是谁启动了该脚本,其他用户都应该能够关闭该脚本。

如何执行此操作取决于脚本的详细信息。如果它没有一个可以检查关闭条件本身的循环,您也许可以执行一些操作,例如让它生成一个后台进程,定期检查条件并在满足条件时杀死其父进程 pid。

关于bash - 允许其他用户控制进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13525340/

相关文章:

bash - Shell脚本运行命令创建多个进程

预提交 Hook 期间的 git diff 导致 Not a git repository

shell - 检查 shell 脚本中是否存在带有通配符的文件

posix - pid =`cat $pidfile`或读取pid <$ pidfile?

linux - 如何将 "inject"行转换为此处的文档重定向?

git - 为什么我不能将 echo 与 GIT_ASKPASS 一起使用

bash - 计算每个变量的百分位数和最大值

javascript - 使用 Node.js 子进程时没有回车?

bash - 使用多个排序键对文件列表进行排序

linux - 如何从 shell 脚本捕获 hbase shell 的输出