Nohup
Запуск процесса в фоновом режиме с игнорированием к сигналу HUP, чтобы процесс мог продолжать свою работу, после того как пользователь выйдет из системы.
nohup <command> &
nohup — UNIX-утилита, запускающая указанную команду с игнорированием сигналов потери связи (hangup)таким образом, команда будет продолжать выполняться в фоновом режиме и после того, как пользователь выйдет из системы. Если стандартным выводом (stdout) команды является терминал, то он и стандартный поток диагностики (stderr) перенаправляются с добавлением в файл «nohup.out» в текущей директории; если это невозможно сделать, то перенаправление происходит в файл «$HOME/nohup.out». Если и это невозможно сделать, то команда не запускается совсем.
При создании файлов «nohup.out» или «$HOME/nohup.out» команда nohup устанавливает им атрибуты доступа только для владельца этих файлов (группа и остальные пользователи не имеют прав доступа к этим файлам). Если же эти файлы уже существуют, то их права доступа не изменяются.
nohup не переводит автоматически команду в фоновый режим; пользователь должен сделать это явным образом, завершив командную строку символом «&».
Работа с сигналами
При должной поддержке со стороны демона, данный сигнал заставит демон перечитать свой конфиг и адаптироваться к изменениям без перезапуска
kill -n HUP <PID>
Временная остановка процесса:
Выполняется с помощью отправки сигнала stop:
kill -s STOP 1313, где 1313 PID процесса
после чего в выводе утилиты ps в поле STAT описывающее текущее состояние процесса он засветится как T
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
tsyrenov 1214 0.0 0.0 73360 1796 ? S 23:06 0:00 sshd: tsyrenov@pts/1
tsyrenov 1215 0.0 0.3 26256 7516 pts/1 Ss+ 23:06 0:00 -bash
tsyrenov 1313 0.4 0.1 14616 2200 pts/1 T 23:06 0:02 watch -n0 date
Возобновление работы приостановленного процесса можно выполнить отправкой сигнала CONT
kill -s CONT 1313
но надо помнить что не все процессы смогут безболезненно восстановить приостановленную ранее работу, например при ситуации когда установленные процессом сетевые соединения за время простоя закрылись по таймауту.
Гарантированное уничтожение процесса
kill -s KILL <PID>
Уничтожение процесса с созданием дампа памяти
kill -s SEGV <PID>
Nice, renice
Запуск процесса с понижением приоритета на право доступа к cpu (чем выше значение, тем ниже приоритет). Возможный диапазон значений от +20 до -19.
nice -n '12' bash
процесс был запущен из под рядового пользователя у которого по умолчанию есть права только на понижение приоритета, но не на повышение. В выводе утилиты ps с ключом lax, данный процесс в поле NI отображающего фактор уступчивости засветится значением 12
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
5 1000 19138 19006 20 0 73360 1788 poll_s S ? 0:00 \_ sshd: tsyrenov@pts/1
0 1000 19139 19138 20 0 26256 7520 wait Ss pts/1 0:00 \_ -bash
0 1000 19238 19139 32 12 22816 3972 n_tty_ SN+ pts/1 0:00 \_ bash
вся дальнейшая работа из под такого shell'а будет выполнятся с пониженным, унаследованным приоритетом 12.
Уже работающим процессам на лету изменить приоритет можно с помощью renice.
Из под пользователя root мы можем на лету изменить приоритет в любую сторону
root@srv:~# renice -22 19238
19238 (process ID) old priority 12, new priority -20
Видим что приоритет у процесса поднялся до -20
5 1000 19138 19006 20 0 73360 1788 poll_s S ? 0:00 \_ sshd: tsyrenov@pts/1
0 1000 19139 19138 20 0 26256 7520 wait Ss pts/1 0:00 \_ -bash
0 1000 19238 19139 0 -20 22816 4072 n_tty_ S<+ pts/1 0:00 \_ bash
С ключом -u можно увеличить фактор уступчивости для всех процессов конкретного пользователя
root@srv:~# renice 10 -u tsyrenov
1000 (user ID) old priority -20, new priority 10
4 0 19006 435 20 0 73360 3540 poll_s Ss ? 0:00 \_ sshd: tsyrenov [priv]
5 1000 19138 19006 30 10 73360 1788 poll_s SN ? 0:00 \_ sshd: tsyrenov@pts/1
0 1000 19139 19138 30 10 26256 7520 wait SNs pts/1 0:00 \_ -bash
0 1000 19238 19139 30 10 22816 4072 wait SN pts/1 0:00 \_ bash
Fuser
Для определения процессов использующих те или иные файлы или сокеты, можно воспользоваться утилитой fuser. Fuser полезен при диагностике, например при ситуации когда размонтируемая файловая система занята по причине того что используется какими либо процессами, все эти процессы можно без труда выявить.
root@srv:~# fuser -mv /dev
USER PID ACCESS COMMAND
/dev: root kernel swap /dev/dm-1
root kernel mount /dev
root 1 F.... init
root 306 F.... upstart-udev-br
root 310 F.... udevd
root 474 F.... sshd
messagebus 482 F.... dbus-daemon
root 546 F.... upstart-socket-
root 579 F.... udevd
root 616 F.... udevd
root 746 F.... getty
root 757 F.... getty
root 776 F.... getty
root 778 F.... getty
root 784 F.... getty
root 796 F.... acpid
whoopsie 806 F.... whoopsie
root 812 F.... cron
daemon 813 F.... atd
root 844 F.... getty
root 864 F.... sshd
root@srv:~# fuser -mv /run/shm
USER PID ACCESS COMMAND
/run/shm: root kernel mount /run/shm
Комментариев нет:
Отправить комментарий