Контроль работы и ssh
Я не могу найти приличный способ управлять работой через SSH. Я хочу начать работу в сеансе ssh, выйти из системы, снова войти в систему, выполнить команду fg, проверить работу, выйти из системы, а затем повторить весь процесс. Похоже, nohup плохо работает.
Я использовал эту команду
$ nohup script & > nohup.out
[1] 28128
$ nohup: ignoring input and appending output to `nohup.out'
[1]+ Exit 255 nohup script
Если я сделаю либо
$ jobs
$ ps -ef | grep script
Я ничего не получаю, т.е. процесс не найден.
Кроме того, у меня есть связанный вопрос: если я нахожусь в сеансе ssh и хочу отправить задание в фоновый режим, ctrl-z не работает. Что делать?
Кто-нибудь может мне помочь?
6 ответов
Хорошо - один из вариантов - использовать экран.
- Вы входите в систему
- Вы запускаете экран
- ты управляешь своей работой
- Вы нажимаете Ctrl+ Ad, чтобы отделить
- Вы выходите
- через несколько часов вы входите в систему и запускаете screen -r - у вас есть результат shell / job перед вами. или, может быть, все еще работает...
больше примеров здесь.
другой вариант - возможно, хуже, если это одноразовая работа - демонизировать сценарий оболочки, добавить правильное ведение журнала и использовать start-stop-daemon для запуска его в фоновом режиме до его завершения. статус - может быть проверен в журналах производства.
Я использую экран также для этого.. как правило, я вхожу и запускаю
screen -S $meaningful-name
Затем, когда я воссоединяюсь, я просто бегу
screen -r $meaningful-name
Я также обычно добавляю свое имя пользователя в экранное имя сеанса, если я работаю от имени пользователя root на одном из наших серверов, чтобы другие люди могли видеть его и подключаться к нему, если это необходимо.
Вы можете использовать программу screen
, Я использую его для управления несколькими интерактивными оболочками.
Использование:
screen
startyoujob.sh
<C-A D> (Ctrl A then D, will detach your session)
screen -r (this will reattach your session)
Немного screen
опрокидывается в Arch Linux Wiki, официальном screen
веб-сайт, и некоторые советы и рекомендации для вашего экрана (со скриншотами).
Если вы хотите использовать экран без присмотра, используйте:
# screen -d -m script.sh
Что бы поставить ваш сценарий на заднем плане, отстранен! Теперь вы можете легко выйти и продолжить то, что вы делали.
Если вы не хотите использовать экран, единственным другим вариантом будет отправить все выходные данные в лог-файл и запустить tail в лог-файле для просмотра прогресса. Это предполагает, что задание не является интерактивным, что, вероятно, должно иметь место в случае любой продолжительной работы в любом случае. Если вам нужно преждевременно остановить работу, вы можете использовать ps, чтобы найти pid и просто убить его.
Глядя на вашу команду выше, вы должны просто проверить содержимое nohup.out. Но Nohup не требуется, вы можете запустить задание, запустить ^Z, а затем набрать "disown" (в любом случае, в bash - это удалит задание из списка заданий, но обходного пути нет).
Вы можете объединить screen и ssh в одну команду:
ssh hostname -t screen -RD
Нажмите Control-A Control-D для отключения.