Выполнение непрерывных работ удаленно

Выполнение непрерывных работ удаленно

Я новичок в Linux, и, вероятно, задаю довольно простой вопрос. Как запустить непрерывную программу в Linux?

По сути, у меня есть программа, которая будет постоянно проверять наличие контента на веб-сайте. Эта программа будет выполняться в течение нескольких дней. У меня нет прав администратора на компьютере, на котором я хочу запустить эту программу, и у меня также нет эксклюзивного доступа к этому компьютеру, что означает, что другие пользователи могут войти в систему физически. Более того, за исключением какой-нибудь невыразимой катастрофы, компьютер будет работать в течение всего времени выполнения моей программы.

Я знаю, что могу подключиться к машине по SSH и запустить программу. Однако это нежелательно, так как для этого мне понадобится вторая машина (что как бы сводит на нет смысл того, что я делаю), не говоря уже о проблемах с тайм-аутами.

Есть ли способ запустить мою программу на компьютере удаленно, не устанавливая никакого соединения после ее запуска?

решение1

Если это что-то, что должно происходить через регулярные запланированные промежутки времени, используйте cron(например, вам нужно проверять веб-сайт раз в час, или раз в день, или чаще или реже, но все равно не произвольно).

Однако... Возможно, вам захочется выполнить команду в определенное время позже, а непрямо сейчасдля этого вы хотите использовать atдемон, который позволяет вам запустить команду один раз в более позднюю дату/время (например, сейчас 5 часов, и вы хотите пойти домой, но у вас есть 4-часовой процесс, который лучше всего запустить посреди ночи, и он не повторяется).

Я скажу nohup, что screen, tmuxкак уже упоминалось, используйте, nohupесли вы хотите запустить его прямо сейчас, но не хотите повторно подключаться к этому сеансу, чтобы проверить его позже. screen/ tmuxпредназначены для проверки его позже.

решение2

Вам нужно сделать две вещи:

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

Итак, для команды command:

nohup command &

решение3

nohupопределенно правильный путь, если вы можете запустить свою программу, не взаимодействуя с ней: например, если она записывает все свои выходные данные и сообщения об ошибках в файл, к которому вы сможете обратиться позже. проверьте nohup.outфайл, чтобы увидеть сообщения об ошибках, которые программа оставила во время работы (спасибо за исправление, Майкл!)

Если вам необходимо взаимодействовать с программой во время ее работы,Экран GNUможет быть лучшим способом сделать это. Он позволяет вам создать виртуальный терминал, который продолжает работать даже после того, как вы выходите из системы, вместе со всеми запущенными в нем программами, пока никто не выключит компьютер.Вот руководствоЯ обнаружил это при его использовании.

Связанный контент