Вы можете сделать это намного лучше. На самом деле вы можете сделать это двумя способами
1. используя механизм переднего плана-фона
2. используя systemd - управление службами (немного сложно)
используя fg / bg
Когда мы запускаем процесс с помощью оболочки (? bash), он будет взаимодействовать с нашим терминалом. Мы можем управлять этой интерактивностью с помощью
- Control-Z (остановить, не выйти, просто приостановить)
- Control- C (остановить, убить == выйти)
- fg (возврат на передний план == интерактивность)
- bg (запуск в фоновом режиме, когда он остановлен)
Вы можете использовать этот способ вручную или с помощью сценарий. Я покажу оба.
вот скриншот, как сделать вручную
с использованием bash
вот простой скрипт
#!/bin/bash
APP_STATE=$1;
APP_NAME=$2;
# TASKS=( cont stop );
function stop_app(){
APP_PID=$(pidof $APP_NAME);
kill -n 19 $APP_PID;
if [[ $? == '0' ]]; then
echo "$APP_NAME paused!";
else
echo "could not pause $APP_NAME";
fi
}
function continue_app(){
APP_PID=$(pidof $APP_NAME);
kill -n 18 $APP_PID;
if [[ $? == '0' ]]; then
echo "$APP_NAME continued ...";
else
echo "could not continue $APP_NAME";
fi
}
case $APP_STATE in
cont )
continue_app ;;
stop )
stop_app ;;
esac
и снимок экрана для запуска этого скрипта
Note bg and fg are interfaces and you can do it in lower level using kill
command by sending stop signal and continue signal which my script does it this way.
>>> kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
please notice signals 18 and 19.
For a simple killing a process by name use pkill
command.
For a complex management please take look at /etc/systemd/system
directory
And if you have a Node.js server up and running and its management use either of pm2 или systemd