1

У меня есть сценарий оболочки, который делает несколько простых.

#!/bin/sh
do something boring...

Когда я выполняю сценарий оболочки, как это,

$ nohup sh mysh.sh > /null/dev/ 2>&1 &

Я вижу, есть два процесса в списке.

$ ps -ef | grep mysh
... xxxxx 1     ... sh mysh.sh // same xxxxx
... yyyyy xxxxx ... sh mysh.sh // same xxxxx

Это нормально?

2 ответа2

1

Я просто воссоздал то, что у вас здесь и заменил, do something boring... со sleep 10000 и не было этого случиться. Я считаю, что вы делаете что-то, что использует fork() или clone() для создания дочернего процесса. Я подозревал, что nohup запускает процесс как дочерний процесс, но, похоже, это не так.

1

Как видите, yyyyy - это дочерний процесс xxxxx. Совершенно нормально, что один и тот же сценарий оболочки выполняется внутри «mysh.sh», что приведет к такому сценарию.

Вы прямо / косвенно вызываете mysh.sh внутри скрипта? Это единственный способ думать, что это когда-нибудь случится.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .