Назад | Перейти на главную страницу

контроль заданий и 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 не работает. Что делать?

Кто-нибудь может мне помочь?

ну - один из вариантов - использовать экран.

  1. вы входите в систему
  2. ты зажигаешь экран
  3. ты выполняешь свою работу
  4. вы нажимаете ctrl + a d, чтобы отсоединить
  5. вы выходите из системы
  6. через несколько часов вы входите в систему и запускаете экран -r - перед вами результат вашей оболочки / работы. а может все еще работает ...

больше примеров Вот.

другой - возможно, хуже, если это одноразовая работа - вариант состоит в том, чтобы демонизировать ваш сценарий оболочки, добавить надлежащее ведение журнала и использовать 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 вики, то официальный screen интернет сайт, и немного советы и рекомендации для вашего screenrc (со скриншотами).

Если вы хотите использовать screen в автоматическом режиме, используйте:

# screen -d -m script.sh

Это поместит ваш сценарий в фоновый режим, отдельно! Теперь вы можете легко выйти из системы и продолжить то, что делали.

Если вы не хотите использовать screen, единственный другой вариант - отправить весь вывод в файл журнала и запустить tail в файле журнала для просмотра прогресса. Это предполагает, что задание не интерактивно, что, вероятно, должно быть в любом случае для любого длительного задания. Если вам нужно преждевременно остановить работу, вы можете использовать ps, чтобы найти pid и просто убить его.

Глядя на вашу команду выше, вы должны просто иметь возможность проверить содержимое nohup.out. Однако в Nohup нет необходимости, вы можете запустить задание, запустить ^ Z, затем ввести 'disown' (в любом случае в bash - это удалит задание из списка заданий, но этого не избежать).

Вы можете объединить screen и ssh в один с помощью этой команды:

ssh hostname -t screen -RD

Нажмите Control-A Control-D, чтобы отключиться.