我有一个在我们的服务器上运行的 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/