Как записать сценарий оболочки, который выполняется на входе в систему?

Стандартный рецепт для выполнения удаленной команды от удаленного входа в систему как SSH следующий:

nohup command </dev/null >command.log 2>&1 &

Если command сценарий оболочки, который заботится о входе в сам файл, затем Вы могли измениться command.log кому: /dev/null. После того как Вы запускаете это, выходите из системы сразу же.

Вам нужно все на той строке.

nohup говорит оболочке не нарушать процесс, если сессия входа в систему разъединяется.

</dev/null говорит этому никогда не ожидать входа

>command.log говорит этому отправлять любые сообщения в этот именованный файл журнала

2>&1 говорит этому отправлять любые сообщения stderr в тот же файл журнала. В некоторых случаях лучше иметь два файла, второй для сбора сообщений об ошибках и первого для сбора нормальных сообщений действия. Это может помочь проверить, что все работало правильно.

& говорит этому отсоединять этот процесс и выполнять его в фоновом режиме как процесс демона.

15
25.07.2015, 21:07
4 ответа

Если Вы хотите, чтобы это было глобально, изменить

 /etc/profile 

или добавьте сценарий к

 /etc/profile.d

Если Вы хотите, чтобы это было определенным для пользователя, изменить

 /home/$USER/.profile
17
27.01.2020, 19:50
  • 1
    Не забывайте, что расширение должно быть .sh если Вы вставляете свой сценарий /etc/profile.d/. chmode +x /etc/profile.d/myscript.sh конечно, также. –  Brian Haak 05.08.2017, 01:59
  • 2
    Raspbian. Попытка работать /usr/local/bin/pihole -c команда на автовходе в систему определенного пользователя. Добавленный эта строка к /home/$USER/.profile - ничего не происходит. Когда я добавляю сценарий к /etc/profile.d затем это работает, но это глобально и выполняет его, даже когда я открываю ssh сессию (который не является тем, что я хочу). Добавление к .bashrc работы также, но выполнения любое время, я открываю новую оболочку (который является не, что я хочу). Вопрос: Почему добавление к /home/$USER/.profile не работал бы??? –  Drew 18.04.2018, 11:08

Просто добавьте сценарий удара к приложениям Запуска.

В поле команды войти

bash /full/path/to/bash/script.sh/
3
27.01.2020, 19:50
  • 1
    Как Вы добавляете "удар/.../script.sh" к приложениям Запуска из командной строки? –  aleb 01.02.2013, 22:02

Если вы хотите быть более специфичным для bash, вы также можете написать свой код в ~ / .bash_profile или ~ / .bash_login.

И вы можете использовать там любой скрипт, например:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi
0
27.01.2020, 19:50

/etc/profile или $HOME/.profileили$HOME/.bash_profile

Я бы настоятельно не рекомендовал использовать /etc/profile.d/yourscript.sh, если он производит вывод. При использовании интерактивного сеанса без -вы получите сообщение $TERM is not set. Это заметно при использовании протокола ssh, например scp. Обычно это не имеет большого значения, однако Veeam это не нравится, и он выдает предупреждение. Я знаю, что Veeam здесь не в тему, но стоит отметить, что не все приложения корректно игнорируют предупреждение $TERM is not set.

Короче говоря, если сценарий генерирует выходные данные, поместите их в места, указанные в первой строке. Однако, если вы изменяете среду и ваш сценарий не генерирует вывод, используйте последний вариант.

1
27.01.2020, 19:50

Теги

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