Управление nohup процессом

Некоторое время назад во время активной разработки проекта на Laravel понадобилось часто перезапускать вебсокет-сервер (изменили код, запушили — перезапустили, проверили. Снова кое-что подправили в коде, снова запушили, снова перезапустили и т.д). На боевом сервере для этого правильнее было бы использовать что-то вроде supervisor, но как-то у меня с ним не заладилось на деве 🙂 Накидал на коленке такой вот bash-скрипт, запускающий и останавливающий указанную команду в фоне посредством nohup

#!/bin/bash
case $1 in
  -up)
     nohup command > command.log 2>&1 & echo $! > command.pid
  ;;
  -down)
    kill -9 `cat command.pid`
    rm command.pid
  ;;
esac

При запуске с параметром -up в фоне запускается команда command, весь ее вывод перенаправляется в файл command.log, а в файл command.pid записывается ее process id.

Соответственно, при запуске скрипта с параметром -down считывается файл command.pid, процесс с id из него убивается, а файл удаляется.

Из минусов — можно дважды запустить команду в фоне, и второй запуск перетрет pid-файл первого.