Как использовать флаги в приложении, использующем env?

Если вы установили screenна удаленных серверах, попробуйте это, что запустит команду fstrimвнутри отсоединенного сеанса screen. Что касается ssh, то это приведет к немедленному выходу.

ssh root@192.168.X.X screen -S fstrim -md fstrim /data

Вы можете повторно подключиться к сеансу с помощью

ssh -tt root@192.168.X.X. screen -r fstrim

и снова отключитесь с помощью Ctrl a(Ctrl )d

Причина, по которой ваша первоначальная команда не работает, заключается в том, что nohupможет видеть, что stdout не является терминалом и держит дескриптор открытым для записи. (Если бы вы использовали ssh -tt, на удаленной стороне был бы создан псевдотерминал, и nohupувидел бы терминал. )Путем явного перенаправления stdout вы можете заставить процесс работать в фоновом режиме, как и ожидалось:

ssh -fn root@192.168.X.X "nohup fstrim /data >nohup.out &"

Прочтите man nohupдля получения подробной информации об этом, теперь вы знаете, что ищете.

1
01.11.2020, 15:00
1 ответ

Кажется, используется флаг -Sна env, вот так:

#!/usr/bin/env -S bash -x
...
...

работает.

Интересно отметить, что по некоторым причинам это не указано на справочной странице , хотя показано в выводе --help.

Вероятно, это связано с тем, что envначал иметь флаг -Sтолько тогда, когда coreutils был обновлен с (до8.30). Я предполагаю, что большинство справочных страниц не обновляются и все еще содержат информацию из предыдущего8.30(например,:8.28не имеет флага -S).

ссылка:

https://jhermann.github.io/blog/linux/know-how/2020/02/28/env_with_arguments.htmlhttps://linux.die.net/man/1/env

2
18.03.2021, 22:53

Теги

Похожие вопросы