Командная строка

Процессы и задачи

Управление процессами и фоновыми задачами

Просмотр процессов

# Список процессов
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            # изменить приоритет

Сигналы

СигналНомерОписание
SIGHUP1Перечитать конфигурацию
SIGINT2Прервать (Ctrl+C)
SIGQUIT3Завершить с дампом
SIGKILL9Принудительное завершение
SIGTERM15Мягкое завершение
SIGSTOP19Приостановить
SIGCONT18Продолжить

Фоновые задачи

# Запустить в фоне
command &

# Отправить в фон (Ctrl+Z, затем bg)
bg

# Вернуть на передний план
fg

# Список фоновых задач
jobs

# Продолжить выполнение после выхода
nohup command &
nohup command > output.log 2>&1 &

# Отсоединить от терминала
disown %1

Screen и Tmux

Для долгих задач используйте терминальные мультиплексоры:

Screen

# Создать сессию
screen -S mysession

# Отсоединиться: Ctrl+A, D

# Список сессий
screen -ls

# Подключиться
screen -r mysession

Tmux

# Создать сессию
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                         # удалить задачу