Командная строка
Процессы и задачи
Управление процессами и фоновыми задачами
Просмотр процессов
# Список процессов
ps aux # все процессы
ps aux | grep nginx # фильтр по имени
ps -ef # альтернативный формат
# Древовидный вид
pstree
pstree -p # с PID
# Интерактивный монитор
top
htop # улучшенный вариантИнформация о процессе
# По PID
ps -p 1234 -o pid,ppid,cmd,%cpu,%mem
# Открытые файлы процесса
lsof -p 1234
# Файловые дескрипторы
ls -l /proc/1234/fd
# Память процесса
pmap 1234
# Найти PID по имени
pgrep nginx
pidof nginxУправление процессами
# Завершить процесс
kill 1234 # SIGTERM (мягко)
kill -9 1234 # SIGKILL (принудительно)
kill -HUP 1234 # перечитать конфиг
# По имени
killall nginx
pkill nginx
pkill -f "python script.py" # по полной команде
# Приоритет (nice)
nice -n 10 command # запустить с низким приоритетом
renice -n 5 -p 1234 # изменить приоритетСигналы
| Сигнал | Номер | Описание |
|---|---|---|
| SIGHUP | 1 | Перечитать конфигурацию |
| SIGINT | 2 | Прервать (Ctrl+C) |
| SIGQUIT | 3 | Завершить с дампом |
| SIGKILL | 9 | Принудительное завершение |
| SIGTERM | 15 | Мягкое завершение |
| SIGSTOP | 19 | Приостановить |
| SIGCONT | 18 | Продолжить |
Фоновые задачи
# Запустить в фоне
command &
# Отправить в фон (Ctrl+Z, затем bg)
bg
# Вернуть на передний план
fg
# Список фоновых задач
jobs
# Продолжить выполнение после выхода
nohup command &
nohup command > output.log 2>&1 &
# Отсоединить от терминала
disown %1Screen и Tmux
Для долгих задач используйте терминальные мультиплексоры:
Screen
# Создать сессию
screen -S mysession
# Отсоединиться: Ctrl+A, D
# Список сессий
screen -ls
# Подключиться
screen -r mysessionTmux
# Создать сессию
tmux new -s mysession
# Отсоединиться: Ctrl+B, D
# Список сессий
tmux ls
# Подключиться
tmux attach -t mysession
# Разделить окно
# Ctrl+B, % — вертикально
# Ctrl+B, " — горизонтальноПланировщики задач
Cron
# Редактировать crontab
crontab -e
# Формат: минута час день месяц день_недели команда
# Примеры:
0 2 * * * /path/to/backup.sh # каждый день в 2:00
*/5 * * * * /path/to/check.sh # каждые 5 минут
0 0 * * 0 /path/to/weekly.sh # каждое воскресенье
# Список задач
crontab -l
# Системные cron директории
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/Systemd timers
# Список таймеров
systemctl list-timers
# Создать таймер: /etc/systemd/system/mytask.timer
[Unit]
Description=My Task Timer
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.targetОтложенное выполнение
# Выполнить через время
sleep 60 && command
# at — однократное выполнение
echo "command" | at now + 1 hour
at 14:00
atq # список задач
atrm 1 # удалить задачу