Стандартный рецепт для выполнения удаленной команды от удаленного входа в систему как SSH следующий:
nohup command </dev/null >command.log 2>&1 &
Если command
сценарий оболочки, который заботится о входе в сам файл, затем Вы могли измениться command.log
кому: /dev/null
. После того как Вы запускаете это, выходите из системы сразу же.
Вам нужно все на той строке.
nohup
говорит оболочке не нарушать процесс, если сессия входа в систему разъединяется.
</dev/null
говорит этому никогда не ожидать входа
>command.log
говорит этому отправлять любые сообщения в этот именованный файл журнала
2>&1
говорит этому отправлять любые сообщения stderr в тот же файл журнала. В некоторых случаях лучше иметь два файла, второй для сбора сообщений об ошибках и первого для сбора нормальных сообщений действия. Это может помочь проверить, что все работало правильно.
&
говорит этому отсоединять этот процесс и выполнять его в фоновом режиме как процесс демона.
Если Вы хотите, чтобы это было глобально, изменить
/etc/profile
или добавьте сценарий к
/etc/profile.d
Если Вы хотите, чтобы это было определенным для пользователя, изменить
/home/$USER/.profile
Просто добавьте сценарий удара к приложениям Запуска.
В поле команды войти
bash /full/path/to/bash/script.sh/
Если вы хотите быть более специфичным для bash, вы также можете написать свой код в ~ / .bash_profile или ~ / .bash_login.
И вы можете использовать там любой скрипт, например:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
/etc/profile
или $HOME/.profile
или$HOME/.bash_profile
Я бы настоятельно не рекомендовал использовать /etc/profile.d/yourscript.sh
, если он производит вывод. При использовании интерактивного сеанса без -вы получите сообщение $TERM is not set
. Это заметно при использовании протокола ssh, например scp. Обычно это не имеет большого значения, однако Veeam это не нравится, и он выдает предупреждение. Я знаю, что Veeam здесь не в тему, но стоит отметить, что не все приложения корректно игнорируют предупреждение $TERM is not set
.
Короче говоря, если сценарий генерирует выходные данные, поместите их в места, указанные в первой строке. Однако, если вы изменяете среду и ваш сценарий не генерирует вывод, используйте последний вариант.
.sh
если Вы вставляете свой сценарий/etc/profile.d/
.chmode +x /etc/profile.d/myscript.sh
конечно, также. – Brian Haak 05.08.2017, 01:59/usr/local/bin/pihole -c
команда на автовходе в систему определенного пользователя. Добавленный эта строка к/home/$USER/.profile
- ничего не происходит. Когда я добавляю сценарий к/etc/profile.d
затем это работает, но это глобально и выполняет его, даже когда я открываю ssh сессию (который не является тем, что я хочу). Добавление к.bashrc
работы также, но выполнения любое время, я открываю новую оболочку (который является не, что я хочу). Вопрос: Почему добавление к/home/$USER/.profile
не работал бы??? – Drew 18.04.2018, 11:08