Запуск нескольких фоновых процессов в Linux с использованием собственного средства запуска сценариев оболочки - PullRequest
0 голосов
/ 29 октября 2019

Я хотел бы запустить несколько экземпляров приложения на удаленном сервере Linux, который работал бы параллельно, а также после выхода из системы. Я хотел бы запустить их, используя один сценарий оболочки.

Допустим, я хочу запустить следующие команды параллельно:

matlab -nodisplay -r "matlab_test"
matlab -nodisplay -r "matlab_test2"

И, скажем, эти процессы обновляют файлы с именем"test_file.mat" и "test_file2.mat" соответственно настолько часто, насколько это возможно.

Я пробовал несколько методов, которые я погуглил, но вот наиболее показательные.

  1. Я попробовал следующую комбинацию, чтобы использовать ее в будущем сценарии оболочки:

    matlab -nodisplay -r "matlab_test" &
    bg 1
    

    Результат: выходной файл "test_file.mat" вообще не был создан, поэтому я предполагаю, что процессбыл помещен в фоновый режим, но он там не работал.

    Примечание: Когда я запускаю этот процесс, файл создается.

  2. Я также пытался:

    nohup matlab -nodisplay -r "matlab_test" &
    

    Результат: командная строка была занята, что, как я полагаю, препятствует вызову следующих команд.

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

Вы можете использовать экран пакет. в большинстве дистрибутивов Linux этот пакет уже установлен, но если нет, то вы можете легко установить его через репозиторий.

в Ubuntu и Debian

apt install screen

в CentOS и Fedora

yum install screen

Чтобы начать сеанс экрана, просто введите screen в консоли:

screen

Вы можете отсоединиться от сеанса экрана, набрав:

Ctrl+a d

Программа, запущенная в сеансе экрана, продолжит работу после отсоединения от сеанса. Чтобы найти идентификатор сеанса, перечислите текущие сеансы рабочего экрана:

screen -ls
There are screens on:
    10835.pts-0.linuxize-desktop   (Detached)
    10366.pts-0.linuxize-desktop   (Detached)
2 Sockets in /run/screens/S-linuxize.

и Если вы хотите восстановить сеанс экрана:

screen -r 10835
0 голосов
/ 29 октября 2019

Попробуйте nohup matlab "matlab_test" &

, которое должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...