Когда я ввожу эту команду
nohup CloudCompute.command &
это дает результат
[1] 782
Это то, что мне нужно. (Кстати, это номер PID)
Итак, когда я запускаю эту же команду в исполняемом файле ( .command
) и пытаюсь добавить вывод в файл, это не работает. Он просто печатает то, что CloudCompute.command
выводит, а не фактический PID, который отображается при запуске. Я уверен, что он находится в том же каталоге.
Почему это происходит? Что я могу сделать, чтобы исполняемый файл выдавал тот же вывод, что и при ручном вводе?
Спасибо
решение1
Почему это происходит?
Этот вывод:
[1] 782
не из исполняемого файла. Это то, что bash
пишет в терминал, когда вы выполняете что-то в фоновом режиме. Это номер задания [1]
и PID 782
процесса. Позже, когда процесс завершится, вы увидите что-то вроде:
[1]+ Done command
Это также связано с тем, bash
что мы заметили, что процесс с заданием номер 1 завершен.
При запуске команды в фоновом режиме PID сохраняется в переменной $!
:
$ sleep 10 &
[1] 1234
$ echo $!
1234
Что можно сделать, чтобы исполняемый файл выдавал тот же результат, что и при ручном вводе?
Поэтому ваш исполняемый файлявляетсяпроизводя тот же результат.