Для SonarQube я вместо этого просто следовал этому :https://devopscube.com/setup-and-configure-sonarqube-on-linux/, в котором рассказывается, как добавить SonarQube в качестве службы... это было, как ни странно, гораздо проще, чем подход systemd.
Для первой команды в файле это все еще нерешенный вопрос...
$!
гарантированно даст вам pid процесса, в котором оболочка выполнила эту команду tail
. Оболочки однопоточные, каждая оболочка живет в своем собственном процессе со своим набором переменных. Не может быть, чтобы $!
одной оболочки просочилось в другую оболочку, точно так же, как назначение переменной оболочки в одной оболочке не повлияет на переменную с тем же именем в другой оболочке (. если мы отложим универсальные переменные оболочки fish
).
Итак, tail -f /dev/null
— это команда, которая выполняется бесконечно, но для короткоживущих -команд обратите внимание, что, поскольку количество возможных идентификаторов процессов ограничено, идентификаторы процессов неизбежно заканчиваются повторным использованием.
В:
true &
pid=$!
Этот $pid
будет содержать идентификатор процесса, в котором запущена оболочка true
, но к тому времени, когда вы используете этот $pid
, этот pid вполне может быть мертв и может ссылаться на другой процесс.