2

В то время как под пользователем 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)

2 ответа2

1

Экран добавлен к пользователю root, используйте sudo screen -raAd для повторного подключения

1

Похоже, что ваше двоичное местоположение на экране не в $ PATH, используемом sh. Поэтому, когда вы выполняете sudo, потому что вы не вызываете оболочку входа в систему для настройки новой среды, команда не будет существовать. Вы можете проверить это, проверив пару вещей.

стать корнем:

$ 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\""

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .