Bash exec записывает вывод в лог-файл и записывает PID в отдельный файл - PullRequest
0 голосов
/ 30 мая 2018

У меня возникла проблема с пониманием BASH: записать вывод команды exec в файл журнала и записать PID в отдельный файл.Вот что я попробовал до сих пор:

exec ./node -connect-manager -manager-address $MANAGER_IP:5998 -manager-web $MANAGER_IP:8000 >> /var/log/skywirenode.log >> echo $$ > /home/odrod420/skywireScript/node.pid &

Кто-нибудь понял, что я не так думаю?

Заранее спасибо!

1 Ответ

0 голосов
/ 30 мая 2018

Вы не можете сделать несколько перенаправлений stdout в одном операторе.Оператор echo должен выполняться как отдельный оператор:

echo $$ > /home/odrod420/skywireScript/node.pid
exec ./node -connect-manager -manager-address $MANAGER_IP:5998 -manager-web $MANAGER_IP:8000 >> /var/log/skywirenode.log 2>&1

Если вы хотите запустить node в фоновом режиме и сохранить его PID в файле, вы не должны использовать exec,вы должны поставить & после команды и echo $! в файл:

./node -connect-manager -manager-address $MANAGER_IP:5998 -manager-web $MANAGER_IP:8000 >> /var/log/skywirenode.log 2>&1 &
echo $! > /home/odrod420/skywireScript/node.pid
...