一旦用户杀死命令,防止GNU屏幕终止会话

迈克

我试图在屏幕上运行命令,但是一旦我在屏幕上用Ctrl-C杀死了子进程,就阻止了它结束会话,就像这样:https : //unix.stackexchange.com/a/47279/79125,但是在我的情况下,该命令以其他用户身份运行,并且我想在按Ctrl-C子进程时重新获得Shell。这是我失败的尝试

$ screen -S mySession -X screen -t tab3   sh  -c ' su - appuser -c "cd /appdir/bin; ./app start; bash"'

$ screen -S mySession -X screen -t tab6   su - appuser -c "sh -c 'cd /appdir/bin; ./app start; exec bash'"

$ screen -S mySession -X screen -t tab6   sh -c "su - appuser -c 'cd /appdir/bin; ./app start; exec bash'" 

$ screen -S mySession -X screen -t tab6   sh -c "su - appuser -c 'cd /appdir/bin; ./app start; exec bash'; su - someuser -c 'exec bash'"
豪克

信号处理

问题在于外壳和应用程序都接收到信号。外壳可能不会简单地忽略该信号,因为它的子进程也会如此。

解决方案是使用信号处理程序,该信号处理程序将信号传递到应用程序:

bash -cm 'trap "kill -INT \$KILLPID" int; /bin/sleep 5 & KILLPID=$!; fg; /bin/echo foo'

-m之所以需要是因为非交互式外壳程序默认情况下禁用了作业控制。

完整命令(未经测试):

screen [...]  su - appuser -c bash -c 'cd /appdir/bin; ./app start & KILLPID=$!; trap "kill -INT $KILLPID" int; fg; bash'

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一旦执行脚本结束,防止GNU屏幕终止会话

来自分类Dev

一旦某个命令终止,如何使命令执行?

来自分类Dev

在Linux中杀死命令

来自分类Dev

解码杀死命令的标志

来自分类Dev

为什么我一旦运行命令就被踢出FTP会话?

来自分类Dev

一旦用户在laravel 5.2 auth系统中注销,如何清除会话变量

来自分类Dev

一旦用户切换相机隐私设置,防止AVCaptureSession崩溃

来自分类Dev

Firebase匿名用户一旦升级

来自分类Dev

一旦期货开始,您如何杀死期货?

来自分类Dev

一旦sudo成为root,是否有命令查看我的用户名?

来自分类Dev

GNU屏幕-杀死外部嵌套会话

来自分类Dev

一旦达到输入文件的EOF,如何终止脚本?

来自分类Dev

一旦满足条件,循环将无法终止

来自分类Dev

在另一个终端中执行命令并关闭它而不杀死命令

来自分类Dev

杀死命令也会杀死其他进程

来自分类Dev

一旦分配给会话类的属性,就无法检索会话值

来自分类Dev

一旦后台进程之一终止,使用bash“ wait”退出

来自分类Dev

一旦我结束调试,AVD 进程就会被杀死

来自分类Dev

一旦将字段变成Django中的属性,如何防止字段从模型中“删除”?

来自分类Dev

一旦找到匹配项,防止在jQuery中向下遍历

来自分类Dev

这是注入的JavaScript代码吗?如何防止它一旦上传就出现?

来自分类Dev

一旦 JComponent 离开屏幕,它就会停止渲染

来自分类Dev

一旦其中一个工人满足特定条件,终止Python多处理程序

来自分类Dev

一旦一名演员完成工作,便终止所有其他演员

来自分类Dev

一旦ncsim中的信号有值,立即执行tcl命令

来自分类Dev

一旦用户移动了传单地图,该如何使其以闪亮的形式返回?

来自分类Dev

一旦用户单击提交,如何从表中删除行/永久禁用提交按钮

来自分类Dev

一旦清除了所有变量,用户制作的 Matlab 函数就会失败

来自分类Dev

一旦用户离开 FormBuilder 中的控件,如何进行表单字段验证

Related 相关文章

  1. 1

    一旦执行脚本结束,防止GNU屏幕终止会话

  2. 2

    一旦某个命令终止,如何使命令执行?

  3. 3

    在Linux中杀死命令

  4. 4

    解码杀死命令的标志

  5. 5

    为什么我一旦运行命令就被踢出FTP会话?

  6. 6

    一旦用户在laravel 5.2 auth系统中注销,如何清除会话变量

  7. 7

    一旦用户切换相机隐私设置,防止AVCaptureSession崩溃

  8. 8

    Firebase匿名用户一旦升级

  9. 9

    一旦期货开始,您如何杀死期货?

  10. 10

    一旦sudo成为root,是否有命令查看我的用户名?

  11. 11

    GNU屏幕-杀死外部嵌套会话

  12. 12

    一旦达到输入文件的EOF,如何终止脚本?

  13. 13

    一旦满足条件,循环将无法终止

  14. 14

    在另一个终端中执行命令并关闭它而不杀死命令

  15. 15

    杀死命令也会杀死其他进程

  16. 16

    一旦分配给会话类的属性,就无法检索会话值

  17. 17

    一旦后台进程之一终止,使用bash“ wait”退出

  18. 18

    一旦我结束调试,AVD 进程就会被杀死

  19. 19

    一旦将字段变成Django中的属性,如何防止字段从模型中“删除”?

  20. 20

    一旦找到匹配项,防止在jQuery中向下遍历

  21. 21

    这是注入的JavaScript代码吗?如何防止它一旦上传就出现?

  22. 22

    一旦 JComponent 离开屏幕,它就会停止渲染

  23. 23

    一旦其中一个工人满足特定条件,终止Python多处理程序

  24. 24

    一旦一名演员完成工作,便终止所有其他演员

  25. 25

    一旦ncsim中的信号有值,立即执行tcl命令

  26. 26

    一旦用户移动了传单地图,该如何使其以闪亮的形式返回?

  27. 27

    一旦用户单击提交,如何从表中删除行/永久禁用提交按钮

  28. 28

    一旦清除了所有变量,用户制作的 Matlab 函数就会失败

  29. 29

    一旦用户离开 FormBuilder 中的控件,如何进行表单字段验证

热门标签

归档