在root
用户(由 打印whoami
)下,执行
sh -c "screen -d -m -S testscreen sh -c \"echo asd; echo qwe\""
创建一个有两行输出的屏幕,可以通过以下方式重新连接screen -r testcreen
但如果我使用
sudo -n -u root sh -c "screen -d -m -S testscreen sh -c \"echo asd; echo qwe\""
屏幕未出现在列表中。出了什么问题?我应该怎么做?
(CentOS 5.2)
答案1
听起来您的屏幕二进制位置不在 sh 使用的 $PATH 中。因此,当您使用 sudo 时,由于您没有调用登录 shell 来设置新环境,因此该命令不存在。您可以通过检查几件事来验证这一点。
成为根用户:
$ sudo -s
# which screen
/some/path/to/screen
# echo $PATH
解决此问题的最简单方法是在所使用的命令中指定屏幕的完整路径:
$ sudo -n -u root sh -c "/some/path/to/screen -d -m -S testscreen sh -c \"echo asd; echo qwe\""
如果这不能解决问题,通过执行以下操作来捕获 sh 启动屏幕时是否遇到其他问题会很有帮助:
$ sudo -n -u root sh -c "set -x ; screen -d -m -S testscreen sh -c \"echo asd; echo qwe\""
答案2
屏幕已添加到 root 用户,请使用sudo screen -raAd
重新附加