Запуск сценария - это процесс? [закрыто]

Я запустил ./ install.sh и попытался фон , чтобы иметь возможность закрыть сеанс ssh.

Но после выполнения bg процесс снова выводится на терминал.

Кроме того, я ничего не вижу с заданиями .

А top показывает несколько экземпляров cc1plus , поэтому я даже не уверен, действительно ли запуск сценария считается процессом? Возможно, он запускает несколько процессов в процессе обработки ...

0
задан 25 September 2019 в 23:22
1 ответ

Когда вы запускаете сценарий Shell / Bash, выполнение сценария является процессом. Когда сценарий запускает другие программы, это тоже процессы. Если вы запускаете другие сценарии из своего сценария, в зависимости от того, как вы их запускаете, они также могут быть их собственными процессами.

Например, если вы запустите ./ install.sh , а содержимое будет:

#!/bin/bash
...
...
...

Тогда у вас будет процесс bash , выполняющий ваш сценарий. Примерно так:

ps -ef
joe 345   1   /bin/bash install.sh

345 представляет PID (идентификатор процесса), а 1 представляет PID родительского процесса.

Если ваш сценарий install.sh затем запускается, скажем, touch / tmp / myfile , тогда у вас будет:

ps -ef
joe 345   1   /bin/bash install.sh
joe 346  345  touch /tmp/myfile

Что касается вывода, сообщение суперпользователя, указанное в комментарии к вопросу, довольно хорошо объясняет его, поэтому я не буду пытаться объяснять его заново. Но вывод скрипта / программы привязан к stdout, поэтому он выходит на то, что является stdout. Если это консоль, пусть будет так. Если это файл - отлично. Теоретически, если процесс выполняется в фоновом режиме, и вы отключаетесь от консоли, а stdout - это консоль, это не должно быть проблемой, но у вас не будет результатов для последующего просмотра.

1
ответ дан 4 December 2019 в 15:37

Теги

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