我有一个别名来自动执行以下命令序列:
- ssh到远程服务器
- 使用屏幕执行java程序
类似这样的东西:
alias命令='ssh-i[PATH TO PRIVATE KEY]-p[PORT]-t[USER@REMOTE_HOST]screen[SHELL脚本执行JAR文件]
别名运行良好(正如我在执行后看到的远程计算机中运行的屏幕(,但无论屏幕是否分离,屏幕在执行别名后不久就会终止。客户端和远程计算机都在OSX上运行。
但是,如果我通过按顺序手动执行命令(不使用别名以一次性实现(
- ssh-i[PATH TO PRIVATE KEY]-p[PORT]-t[USER@REMOTE_HOST]
然后在远程外壳上
- 屏幕[SHELL脚本执行JAR]
屏幕中的程序能够运行到完成并正常退出,而不会提前终止。
当我从客户端计算机执行别名时,后台似乎有一些进程会杀死屏幕。这可能是什么原因造成的?谢谢
最有可能的问题是,当传递要运行的命令时,ssh默认不会分配(伪(终端。最简单的方法是将-t
选项传递给ssh(1)
,这将告诉SSH无论如何都要分配一个终端(只要ssh(1)
有一个控制终端(。这将允许一切以与分离命令时相同的方式工作。