Bash / Process удирдах

Process удирдах

Linux дээр ажиллаж буй программ бүрийг process гэдэг. Сервер дээр ажиллахад вэб сервер унтарсан эсэхийг шалгах, хэт их санах ой зарцуулж буй process зогсоох, ажлыг дэвсгэрт явуулах зэрэг шаардлага тогтмол гардаг. Эдгээр бүгдийг Bash-аас хийж чадна.

Ажиллаж буй процессуудыг харах

bash
# Ажиллаж буй бүх процессуудыг харах
ps aux

# Гаралтын баганууд:
# USER   — процессын эзэмшигч
# PID    — процессын дугаар (Process ID)
# %CPU   — CPU ашиглалт
# %MEM   — санах ойн ашиглалт
# COMMAND — командын нэр

# Тодорхой процессыг хайх
ps aux | grep nginx
ps aux | grep python

# Шат шатаар харах (process tree)
ps axjf

top ба htop нь процессуудыг амьд харуулдаг интерактив хэрэгсэл:

bash
# top — стандарт Linux-т байдаг
top
# q дарж гарна, CPU/MEM-ээр эрэмбэлэхэд Shift+P / Shift+M

# htop — илүү тааламжтай харагдалтай (суулгах шаардлагатай)
htop

Процессыг зогсоох (kill)

kill нь процесст сигнал илгээдэг:

bash
# PID-ийг олж авах
pgrep nginx          # процессын нэрээр PID авна
pidof nginx          # мөн адил

# Зөөлнөөр зогсоох (SIGTERM — процесс дуусгавар болгох боломж авна)
kill 1234
kill -15 1234
kill -SIGTERM 1234

# Хүчээр зогсоох (SIGKILL — шууд устгана)
kill -9 1234
kill -SIGKILL 1234

# Нэрээр нь зогсоох
pkill nginx          # nginx нэртэй бүх процессыг зогсооно
killall nginx        # pkill-тэй адил

Эхлээд -15 (зөөлөн) хэрэглэ — процесс файлаа хаах боломж авна. Хэрэв ажиллахгүй бол -9 хэрэглэ.

Дэвсгэрт ажиллуулах

Урт хугацаатай процессыг дэвсгэрт (background) явуулж, terminal-аа чөлөөлж болно:

bash
# Командын төгсгөлд & нэмж дэвсгэрт явуулах
sleep 60 &
# [1] 5678   ← job дугаар ба PID

# Дэвсгэрт буй процессуудыг харах
jobs

# Дэвсгэрийн процессыг урдаа авч ирэх
fg %1          # job дугаараар
fg             # хамгийн сүүлийн job

# Ажиллаж буй командыг дэвсгэрт илгээх
# Ctrl+Z дарж зогсоосноор
bg %1          # дэвсгэрт үргэлжлүүлэн ажиллуулах

nohup — terminal хаасны дараа ч ажиллуулах

Terminal хаагдахад дэвсгэрт процессууд зогсдог. nohup нь үүнээс сэргийлнэ:

bash
# Terminal хаасны дараа ч ажиллах
nohup ./long-script.sh &

# Гаралтыг тодорхой файлд хадгалах
nohup ./long-script.sh > output.log 2>&1 &

echo "Script дэвсгэрт эхэллээ, PID: $!"
# $! нь хамгийн сүүлд эхэлсэн дэвсгэр процессын PID

Практик жишээнүүд

bash
#!/bin/bash

# Процесс ажиллаж байгаа эсэхийг шалгаж, шаардлагатай бол эхлүүлэх
SERVICE="nginx"

if pgrep -x "$SERVICE" > /dev/null; then
  echo "$SERVICE ажиллаж байна"
else
  echo "$SERVICE унтарсан байна — эхлүүлж байна..."
  systemctl start "$SERVICE"
fi
bash
#!/bin/bash

# CPU-г хамгийн их ашигладаг 5 процессыг харуулах
echo "=== CPU-ийн ачааллын тайлан ==="
echo "Процесс              CPU%   MEM%"
echo "-----------------------------------"
ps aux --sort=-%cpu | awk 'NR>1 && NR<=6 {printf "%-20s %5s  %5s\n", $11, $3, $4}'

# Санах ойн ашиглалт
echo ""
echo "=== Санах ойн ашиглалт ==="
free -h

Process удирдах нь серверийн ажиллагааг хянахад зайлшгүй чадвар юм. ps, kill, jobs гурвыг сайн эзэмшсэнээр аливаа Linux системийг итгэлтэй удирдаж чадна.

Дараагийн хичээлд:

Environment variable-уудыг судална — системийн болон хэрэглэгчийн тохиргоог хадгалах, script хооронд мэдээлэл дамжуулах чухал механизм.