← สารบัญบทเรียน M6 · Process & Services (systemd)
M6 · หัวข้อสอบ

Process & Services (systemd)

เครื่อง Linux ไม่ได้นั่งเฉยๆ — มีโปรแกรมหลายสิบหลายร้อยตัวกำลังวิ่งอยู่เบื้องหลังตลอดเวลา บทนี้จะสอนให้คุณ “มองเห็น” มัน สั่งหยุดมันได้ และที่สำคัญสุด — คุมบริการ (service) ด้วย systemd ซึ่งเป็นหัวใจที่ออกสอบหนักมาก

🌱 บทนี้เขียนเพื่อคนที่ไม่เคยแตะ Linux มาก่อนเลย

1Process คืออะไร และ PID คือเลขอะไร

คำว่า process (โพรเซส) แปลตรงตัวว่า “สิ่งที่กำลังดำเนินการอยู่” — ในโลก Linux มันหมายถึง โปรแกรมที่กำลังทำงานอยู่ ณ ตอนนี้

ลองแยกให้ชัด: ไฟล์โปรแกรมที่นอนอยู่บนดิสก์ยังไม่ใช่ process — มันเป็นแค่ “สูตรอาหาร” ที่เขียนไว้เฉยๆ แต่เมื่อไหร่ที่คุณ เปิดมันขึ้นมารัน เครื่องจะโหลดมันเข้าหน่วยความจำและให้ CPU ทำงานตามนั้น — ตอนนั้นแหละมันถึงกลายเป็น process

process แต่ละตัวจะได้ เลขประจำตัว เรียกว่า PID (Process ID) ซึ่งไม่ซ้ำกันเลยในเครื่องตอนนั้น เวลาเราจะสั่งอะไรกับ process ตัวไหน เราจะอ้างถึงมันด้วยเลข PID นี้

💡 เปรียบเทียบให้เห็นภาพ

นึกถึง โรงพยาบาลที่แจกบัตรคิว: พอคุณเดินเข้าไป คุณจะได้บัตรคิวที่มี หมายเลข ไม่ซ้ำใคร เช่น คิว 47

• โปรแกรมบนดิสก์ = ตัวคุณที่ยังไม่ได้เข้าโรงพยาบาล
• process = ตัวคุณที่ได้บัตรคิวแล้ว กำลังรอรับบริการอยู่ในระบบ
• PID = หมายเลขบัตรคิวของคุณ — เจ้าหน้าที่จะเรียกคุณด้วยเลขนี้ ไม่ใช่ชื่อ

ถ้าเจ้าหน้าที่อยาก“เรียก” หรือ “ตัดคิว” ใครออก เขาก็อ้างเลขบัตรนั้น เหมือนที่เราใช้ PID อ้างถึง process

process ตัวพิเศษที่ควรรู้จักคือ PID 1 — เป็น process ตัวแรกสุดที่เครื่องสร้างขึ้นตอนบูต และเป็น “พ่อ” ของ process อื่นๆ ทั้งหมด บน RHEL 9 ตัวที่ครอง PID 1 ก็คือ systemd ซึ่งเราจะเจอมันเต็มๆ ในข้อ 6

2ดู process ที่กำลังวิ่ง: ps / top / pstree

ก่อนจะสั่งหยุดอะไรได้ เราต้อง “มองเห็น” ก่อนว่ามีอะไรวิ่งอยู่บ้าง มี 3 เครื่องมือหลัก

ps — ถ่ายภาพนิ่ง ณ วินาทีนี้

ps ย่อมาจาก “process status” มันจะแสดงรายการ process แบบ ภาพนิ่ง ณ ตอนที่คุณพิมพ์ (ไม่อัปเดตเอง) สองรูปแบบที่ใช้บ่อยที่สุดคือ ps aux และ ps -ef

⌨️ ลองดู
[student@server1 ~]$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY   STAT START   TIME COMMAND
root         1  0.0  0.4 172408 13720 ?    Ss   08:00   0:03 /usr/lib/systemd/systemd
root       842  0.0  0.2  90112  6400 ?    Ss   08:00   0:00 /usr/sbin/sshd
student   1530  0.0  0.1  12136  3200 pts/0 R+  09:14   0:00 ps aux
ps auxแสดง process ของทุก user ทั้งเครื่อง พร้อม %CPU, %MEM และคำสั่งเต็ม (สไตล์ BSD)
ps -efให้ข้อมูลคล้ายกัน แต่โชว์ PPID (เลข process แม่) ด้วย — สไตล์ที่นิยมในงานระบบ
PIDเลขประจำตัวของ process ที่เราจะใช้อ้างอิงเวลาสั่งงาน (เช่นจะ kill)
💡 เกร็ด: ใช้ร่วมกับ grep เพื่อกรองหา

ถ้ามี process เยอะจนตาลาย ให้กรองเอาเฉพาะที่อยากดู เช่น ps aux | grep sshd จะโชว์เฉพาะบรรทัดที่มีคำว่า sshd — เครื่องหมาย | (pipe) คือการส่งผลลัพธ์ต่อให้คำสั่งถัดไป

top — ดูสดแบบเรียลไทม์

ต่างจาก ps ตรงที่ top เป็นจอที่ อัปเดตเองทุกๆ ไม่กี่วินาที เหมือน Task Manager ของ Windows — เห็นได้เลยว่าใครกินซีพียู กินแรมเยอะตอนนี้

⌨️ ลองดู
[student@server1 ~]$ top
top - 09:20:11 up  1:20,  1 user,  load average: 0.05, 0.03, 0.00
Tasks: 142 total,   1 running, 141 sleeping
%Cpu(s):  1.3 us,  0.7 sy,  0.0 ni, 98.0 id
    PID USER     PR  NI    VIRT   RES   %CPU  %MEM  COMMAND
   1530 student  20   0   12136  3200    2.0   0.1  top
    842 root     20   0   90112  6400    0.3   0.2  sshd

หน้าจอนี้จะรีเฟรชเองเรื่อยๆ ปุ่มที่ต้องรู้ขณะอยู่ใน top:

qออกจาก top — สำคัญมาก! เหมือน man ในบท M1 ถ้าไม่กด q จะออกไม่ได้
Mเรียงตามการใช้ หน่วยความจำ (Memory) มากไปน้อย
Pเรียงตามการใช้ ซีพียู (Processor) มากไปน้อย
kสั่ง kill process จากในหน้า top ได้เลย (แล้วพิมพ์ PID)
😅 จุดที่มือใหม่ติดบ่อย

เปิด top แล้วออกไม่เป็น พยายามกด Ctrl+C ก็ไม่ไป — จำง่ายๆ ว่า กด q เพื่อออก เหมือนกันกับ man

pstree — ดูความเป็น “พ่อ–ลูก” ของ process

process แต่ละตัวมัก “แตกลูก” ออกไปเป็น process ใหม่ pstree จะวาดเป็นแผนภาพต้นไม้ให้เห็นว่าใครเป็นพ่อใครเป็นลูก โดยมี systemd เป็นรากบนสุด — รู้จักไว้พอ ไม่ต้องลงลึกในตอนนี้

⌨️ ลองดู
[student@server1 ~]$ pstree
systemd─┬─sshd───sshd───bash───pstree
        ├─NetworkManager
        └─crond

3สั่งหยุด process: kill / killall / pkill

บางครั้ง process ค้าง ไม่ตอบสนอง หรือกินทรัพยากรจนเครื่องอืด เราต้องสั่งให้มันหยุด ในโลก Linux คำที่ใช้คือ kill (ฆ่า) — ฟังดูโหด แต่จริงๆ คือการ “ส่งสัญญาณ” ไปบอก process ว่าให้ทำอะไรสักอย่าง

เรื่อง signal — สัญญาณที่เราส่งไป

signal ที่ต้องรู้มี 2 ตัวหลัก และความต่างของมันสำคัญมาก

Signalเลขความหมาย
SIGTERM15ขอให้ปิดอย่างสุภาพ — process มีโอกาสเซฟงาน เก็บกวาด แล้วค่อยปิดเอง (ค่าเริ่มต้นของ kill)
SIGKILL9บังคับให้ตายทันที — ไม่ให้โอกาสเก็บกวาด เคอร์เนลลากออกไปเลย ใช้เมื่อ SIGTERM ไม่ได้ผล
💡 เปรียบเทียบให้เห็นภาพ

นึกถึงการ ไล่คนออกจากร้านตอนปิด:

SIGTERM (15) = พนักงานเดินไปบอกสุภาพว่า “ขอโทษนะคะ ร้านจะปิดแล้ว เก็บของแล้วออกได้เลยค่ะ” — ลูกค้าได้เก็บกระเป๋า จ่ายเงิน แล้วค่อยเดินออก
SIGKILL (9) = ยามจับแขนลากออกไปทันที ไม่ให้เก็บของ ไม่ให้พูดอะไร

เห็นไหมว่า SIGTERM สุภาพและปลอดภัยกว่า ควรลองอันนี้ก่อนเสมอ ส่วน SIGKILL เก็บไว้เป็นไม้ตายสุดท้าย

⌨️ คำสั่งฆ่า process
[student@server1 ~]$ kill 1530
# ส่ง SIGTERM (15) ขอให้ PID 1530 ปิดตัวอย่างสุภาพ

[student@server1 ~]$ kill -9 1530
# ส่ง SIGKILL (9) บังคับให้ PID 1530 ตายทันที

[student@server1 ~]$ killall firefox
# ฆ่าทุก process ที่ชื่อ firefox พร้อมกัน (อ้างด้วยชื่อ ไม่ใช่ PID)

[student@server1 ~]$ pkill -u student
# ฆ่า process ตามเงื่อนไข เช่น ทุกตัวของ user ชื่อ student
kill PIDส่ง SIGTERM (สุภาพ) ไปยัง process ที่ระบุด้วย PID
kill -9 PIDส่ง SIGKILL บังคับตาย — ใช้เมื่อ kill เฉยๆ ไม่ได้ผล
killall ชื่อฆ่า process ทุกตัวที่ชื่อตรงกัน ในครั้งเดียว
pkillฆ่าตามรูปแบบ/เงื่อนไข เช่น ชื่อบางส่วน, ตาม user, ตาม terminal
⚠️ อย่าใช้ kill -9 พร่ำเพรื่อ

kill -9 ไม่ให้ process เซฟงานหรือเก็บกวาดเลย อาจทำให้ ข้อมูลพัง หรือเหลือไฟล์ขยะค้างไว้ ให้ลอง kill (สุภาพ) ก่อนเสมอ แล้วรอสักครู่ ถ้ายังไม่ยอมตายจริงๆ ค่อยใช้ -9

4งานเบื้องหลัง: &, jobs, fg, bg, Ctrl+Z

ปกติเวลารันคำสั่ง terminal จะ “ค้าง” รอจนคำสั่งนั้นเสร็จก่อนถึงจะรับคำสั่งใหม่ได้ เราเรียกแบบนี้ว่ารันแบบ foreground (เบื้องหน้า) แต่บางงานใช้เวลานาน เราอยากให้มันวิ่งอยู่ background (เบื้องหลัง) แล้วเราทำอย่างอื่นต่อได้

💡 เปรียบเทียบให้เห็นภาพ

เหมือน เครื่องซักผ้า: คุณกดเริ่มซัก (สั่งงาน) แล้วเดินไปทำอย่างอื่นได้ ไม่ต้องยืนเฝ้าหน้าเครื่องจนกว่าจะซักเสร็จ — นั่นคือการรันเบื้องหลัง ส่วนการยืนเฝ้าจนเสร็จคือการรันเบื้องหน้า

⌨️ ลองดู
[student@server1 ~]$ sleep 300 &
[1] 1602
[student@server1 ~]$ jobs
[1]+  Running                 sleep 300 &
[student@server1 ~]$ fg %1
sleep 300
^Z   ← กด Ctrl+Z ตรงนี้
[1]+  Stopped                 sleep 300
[student@server1 ~]$ bg %1
[1]+ sleep 300 &
คำสั่ง &เติม & ท้ายคำสั่ง = สั่งให้รันเบื้องหลังตั้งแต่แรก terminal กลับมารับคำสั่งใหม่ได้ทันที
jobsดูรายการงานเบื้องหลังที่กำลังวิ่ง/หยุดอยู่ พร้อมเลขงาน เช่น [1]
Ctrl+Zพักงานที่กำลังรันเบื้องหน้าไว้ชั่วคราว (สถานะ Stopped)
bg %1สั่งให้งานที่พักไว้ (เลข 1) วิ่งต่อในเบื้องหลัง
fg %1ดึงงานเลข 1 กลับมาเบื้องหน้า (foreground) เพื่อมาดู/คุมต่อ
📌 จำลำดับง่ายๆ

Ctrl+Z = พักไว้ก่อน → bg = เอาไปวิ่งหลังบ้าน → fg = ลากกลับมาหน้าบ้าน ส่วน %1 คือเลขงาน (ดูได้จาก jobs) ไม่ใช่ PID นะ

5ความสำคัญของงาน: nice / renice

เมื่อ process หลายตัวแย่งกันใช้ CPU เราบอกเครื่องได้ว่าตัวไหน “สำคัญ ให้คิวก่อน” ตัวไหน “ใจดี ยอมหลีกทางให้คนอื่น” ค่านี้เรียกว่า niceness (ความใจดี)

ค่า niceness อยู่ในช่วง -20 ถึง 19 และมีตรรกะที่คนชอบสับสน — จำหลักนี้ไว้

💡 เปรียบเทียบให้เห็นภาพ

นึกถึงคนต่อคิว: คนที่ “ใจดีมาก” (niceness สูง = 19) ชอบบอกว่า “เชิญก่อนเลยครับ” เลยได้คิวช้า ได้ CPU ทีหลัง ส่วนคนที่ “ใจดีน้อย/เห็นแก่ตัว” (niceness ต่ำ = -20) จะแซงคิวตลอด ได้ CPU ก่อนใคร

สรุป: ยิ่งค่า niceness ต่ำ ยิ่งได้ CPU ก่อน (สำคัญกว่า) — ค่า -20 คือสำคัญสุด, 19 คือใจดีสุด/รอได้

⌨️ ลองดู
[student@server1 ~]$ nice -n 10 ./backup.sh
# เริ่มรัน backup.sh ด้วย niceness = 10 (ใจดี ยอมหลีกทาง)

[student@server1 ~]$ renice -n 5 -p 1602
# เปลี่ยน niceness ของ process ที่วิ่งอยู่แล้ว (PID 1602) เป็น 5
nice -n ค่า คำสั่งเริ่มรันโปรแกรมใหม่พร้อมกำหนด niceness ตั้งแต่แรก
renice -n ค่า -p PIDเปลี่ยน niceness ของ process ที่กำลังวิ่งอยู่แล้ว
⚠️ ค่าติดลบต้องเป็น root

การตั้ง niceness ให้ ต่ำกว่า 0 (เช่น -10 เพื่อแย่ง CPU มากขึ้น) ต้องใช้สิทธิ์ root (sudo) ส่วน user ธรรมดาตั้งได้แค่ฝั่ง “ใจดีขึ้น” (0 ถึง 19) เท่านั้น

6systemd คืออะไร — ผู้จัดการบริการของเครื่อง

มาถึงหัวใจของบทนี้ บนเซิร์ฟเวอร์ Linux มีโปรแกรมจำนวนมากที่ต้องวิ่งอยู่เงียบๆ เบื้องหลังเพื่อให้บริการ เช่น เว็บเซิร์ฟเวอร์, ระบบ SSH ให้เราล็อกอินจากระยะไกล, ระบบเครือข่าย — โปรแกรมพวกนี้เราเรียกว่า service (บริการ) หรือในศัพท์ systemd เรียกว่า unit

systemd คือโปรแกรมที่ทำหน้าที่ เป็นผู้จัดการบริการทั้งหมด มันคือ process ตัวแรกสุดที่บูตขึ้นมา (PID 1) และจากนั้นมันก็คอยสั่งเปิด สั่งปิด คอยดูแล และคอยสตาร์ตใหม่ให้บริการต่างๆ ตลอดเวลาที่เครื่องเปิดอยู่

💡 เปรียบเทียบให้เห็นภาพ

นึกถึง ผู้จัดการห้างสรรพสินค้า: เช้ามาเขาเป็นคนแรกที่มาถึง (บูตขึ้นก่อน = PID 1) แล้วเขาก็สั่ง “เปิดแผนกอาหาร เปิดแผนกเสื้อผ้า เปิดลิฟต์” (สตาร์ต service ต่างๆ)

ระหว่างวัน ถ้าแผนกไหนมีปัญหาไฟดับ เขาก็สั่งให้เปิดใหม่ ถ้าจะปิดปรับปรุงแผนกไหนก็สั่งปิดได้ และเขายังจดไว้ด้วยว่า “พรุ่งนี้เปิดร้านมาให้เปิดแผนกไหนอัตโนมัติบ้าง”

เราในฐานะแอดมิน ไม่ได้ไปเปิด–ปิดแผนกเอง แต่เรา “สั่งผู้จัดการ” ให้ทำแทน — เครื่องมือที่เราใช้สั่งผู้จัดการคนนี้ชื่อว่า systemctl

7คำสั่ง systemctl ที่ต้องใช้เป็น

systemctl (อ่านว่า “system-control”) คือคำสั่งที่เราใช้คุย/สั่งงาน systemd รูปแบบคือ systemctl [คำกริยา] [ชื่อ service] เช่น systemctl status sshd

⌨️ ดูสถานะก่อนเสมอ: status
[student@server1 ~]$ systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since Mon 09:00:00; 1h ago
   Main PID: 842 (sshd)

บรรทัดที่ต้องอ่านให้เป็น — มีสองคำที่คนละความหมายกัน (ข้อ 8 จะเจาะลึก):

Active:ตอนนี้กำลังวิ่งอยู่ไหม — active (running) = วิ่งอยู่, inactive (dead) = หยุดอยู่
Loaded: ...enabledตอนบูตจะเปิดเองไหม — enabled = เปิดเองอัตโนมัติ, disabled = ไม่เปิดเอง
⌨️ สั่งเปิด/ปิด/รีสตาร์ตตอนนี้
[root@server1 ~]# systemctl start httpd
[root@server1 ~]# systemctl stop httpd
[root@server1 ~]# systemctl restart httpd
[root@server1 ~]# systemctl reload httpd
startเปิดบริการเดี๋ยวนี้ (แต่ไม่เกี่ยวกับการบูตครั้งหน้า)
stopปิดบริการเดี๋ยวนี้
restartปิดแล้วเปิดใหม่ทั้งตัว — process ตายแล้วเกิดใหม่ ใช้เมื่อแก้ค่าเยอะหรือบริการค้าง
reloadโหลดค่าใหม่โดยไม่ปิดบริการ — process เดิมยังวิ่งต่อ ไม่มีช่วงดับ (แต่ไม่ใช่ทุกบริการที่รองรับ)
⌨️ ตั้งให้เปิดเอง/ไม่เปิดเองตอนบูต + เช็คสถานะ
[root@server1 ~]# systemctl enable httpd
[root@server1 ~]# systemctl disable httpd
[root@server1 ~]# systemctl is-enabled httpd
enabled
[root@server1 ~]# systemctl is-active httpd
active
enableตั้งให้บริการเปิดเองอัตโนมัติทุกครั้งที่บูต (ไม่เปิดเดี๋ยวนี้)
disableยกเลิกการเปิดเองตอนบูต
is-enabledถามว่า “ตั้งให้เปิดเองตอนบูตไว้ไหม?” ตอบ enabled หรือ disabled
is-activeถามว่า “ตอนนี้กำลังวิ่งอยู่ไหม?” ตอบ active หรือ inactive

8⭐ start vs enable — จุดที่ออกสอบบ่อยที่สุด

นี่คือเรื่องที่ทำให้คนสอบตกมานักต่อนัก ขอให้อ่านช้าๆ และจำให้ขึ้นใจ ความต่างมีแค่นี้

คำสั่งทำอะไรอยู่รอดหลัง reboot ไหม?
systemctl startเปิดบริการเดี๋ยวนี้❌ ไม่ — รีบูตแล้วกลับไปปิด
systemctl enableตั้งให้เปิดเองตอนบูต✅ ใช่ — แต่ไม่เปิดให้ตอนนี้
💡 เปรียบเทียบให้เห็นภาพ

นึกถึง ไฟในห้อง:

start = กดสวิตช์เปิดไฟตอนนี้ — สว่างทันที แต่พอไฟดับแล้วมาใหม่ (reboot) ไฟก็ไม่ติดเอง
enable = ตั้งระบบ timer ให้ไฟเปิดเองทุกเช้า — แต่ถ้าตอนนี้ยังไม่ถึงเวลา ไฟก็ยังไม่ติด ต้องไปกดสวิตช์เองอยู่ดี

เห็นไหมว่ามันคนละเรื่องกัน! ตัวหนึ่งคุม “ตอนนี้” อีกตัวคุม “ครั้งหน้าที่บูต”

🎯 โจทย์สอบมักสั่งว่า “เปิดบริการ และให้เปิดเองหลัง reboot ด้วย”

ประโยคนี้ = ต้องทำ ทั้งสองอย่าง ถ้าทำแค่ start เครื่องตรวจจะเจอว่า reboot แล้วบริการไม่ขึ้น = ตกข้อนั้น ถ้าทำแค่ enable เครื่องตรวจจะเจอว่าตอนนี้บริการยังไม่วิ่ง = ก็ตกอีก

ทางที่ปลอดภัยและเร็วที่สุดคือใช้ ตัวลัด --now ซึ่งทำทั้ง enable + start พร้อมกันในคำสั่งเดียว:

⌨️ ท่ามาตรฐานที่ควรใช้ในห้องสอบ
[root@server1 ~]# systemctl enable --now httpd
# เท่ากับสั่งทั้ง enable (เปิดเองตอนบูต) และ start (เปิดเดี๋ยวนี้) พร้อมกัน

[root@server1 ~]# systemctl disable --now httpd
# กลับกัน: disable + stop พร้อมกัน

จำสั้นๆ: เจอโจทย์ “เปิด + ให้เปิดเองหลังบูต” ให้พิมพ์ systemctl enable --now ชื่อบริการ แล้วยืนยันด้วย systemctl status ชื่อบริการ ว่าเห็นทั้ง active (running) และ enabled

9ดูรายการ unit ทั้งหมด

เวลาอยากสำรวจว่าเครื่องมีบริการอะไรบ้าง มีสองคำสั่งที่ชื่อคล้ายกันแต่ตอบคนละคำถาม

⌨️ ลองดู
[student@server1 ~]$ systemctl list-units --type=service
UNIT            LOAD   ACTIVE SUB     DESCRIPTION
sshd.service    loaded active running OpenSSH server daemon
crond.service   loaded active running Command Scheduler

[student@server1 ~]$ systemctl list-unit-files --type=service
UNIT FILE          STATE
sshd.service       enabled
httpd.service      disabled
list-unitsแสดง unit ที่ systemd โหลดอยู่ตอนนี้ — เน้นดูว่าอะไรกำลัง active/running
list-unit-filesแสดง unit ทั้งหมดที่ติดตั้งไว้ในเครื่อง พร้อมสถานะ enabled/disabled (เน้นดูตอนบูต)

10tuned — ปรับโปรไฟล์ประสิทธิภาพ

RHEL มีบริการชื่อ tuned ที่ช่วยปรับจูนเครื่องให้เหมาะกับงาน โดยเลือกเป็น “โปรไฟล์” สำเร็จรูป เช่น โปรไฟล์ที่เน้นประหยัดไฟ, เน้นความแรง, หรือเหมาะกับเซิร์ฟเวอร์เสมือน — เครื่องมือที่ใช้สั่งคือ tuned-adm

⌨️ ลองดู
[root@server1 ~]# tuned-adm active
Current active profile: virtual-guest
[root@server1 ~]# tuned-adm list
- balanced
- powersave
- throughput-performance
[root@server1 ~]# tuned-adm profile throughput-performance
tuned-adm activeดูว่าตอนนี้ใช้โปรไฟล์อะไรอยู่
tuned-adm listดูรายชื่อโปรไฟล์ที่มีให้เลือกทั้งหมด
tuned-adm profile ชื่อเปลี่ยนไปใช้โปรไฟล์ที่ต้องการ
📌 รู้จักไว้พอ

ในชีวิตจริง tuned ปรับให้อัตโนมัติได้ดีอยู่แล้ว บทนี้แค่ให้คุ้นหน้าคำสั่ง tuned-adm ไว้ — รู้ว่า active ดูโปรไฟล์ปัจจุบัน, list ดูตัวเลือก, profile เปลี่ยน ก็พอ

11ข้อผิดพลาดที่มือใหม่เจอบ่อย

12สรุปคำสั่งบทนี้ (Cheat Sheet)

คำสั่งทำอะไร
ps aux / ps -efดูรายการ process ทั้งหมด (ภาพนิ่ง)
topดู process สดแบบเรียลไทม์ (กด q เพื่อออก)
pstreeดูความสัมพันธ์พ่อ–ลูกของ process แบบต้นไม้
kill PIDส่ง SIGTERM (15) ขอให้ปิดสุภาพ
kill -9 PIDส่ง SIGKILL (9) บังคับตายทันที
killall ชื่อฆ่า process ทุกตัวตามชื่อ
pkillฆ่า process ตามเงื่อนไข (ชื่อบางส่วน, user ฯลฯ)
คำสั่ง &รันเบื้องหลัง
jobsดูงานเบื้องหลัง
Ctrl+Z / bg / fgพักงาน / วิ่งหลังบ้าน / ดึงกลับหน้าบ้าน
nice -n ค่า คำสั่งเริ่มโปรแกรมใหม่พร้อมตั้ง niceness
renice -n ค่า -p PIDเปลี่ยน niceness ของ process ที่วิ่งอยู่
systemctl status ชื่อดูสถานะบริการ (active? enabled?)
systemctl start / stopเปิด / ปิดบริการเดี๋ยวนี้
systemctl restart / reloadปิดเปิดใหม่ / โหลดค่าใหม่โดยไม่ดับ
systemctl enable / disableตั้ง / ยกเลิกการเปิดเองตอนบูต
systemctl enable --now ชื่อ⭐ enable + start พร้อมกัน (ท่าสอบ)
systemctl is-active / is-enabledถามว่ากำลังวิ่งไหม / ตั้งเปิดเองไว้ไหม
systemctl list-unitsดู unit ที่โหลดอยู่ตอนนี้
systemctl list-unit-filesดู unit ทั้งหมดที่ติดตั้ง + enabled/disabled
tuned-adm active / list / profileดู / เลือกโปรไฟล์ประสิทธิภาพ
✅ จบบทนี้คุณควรทำได้

มองเห็น process ที่วิ่งอยู่ (ps, top) → สั่งหยุดเป็น (kill) → รันงานเบื้องหลังเป็น → และคุม service ด้วย systemctl ได้คล่อง โดยเฉพาะแยกออกว่า start = ตอนนี้ ส่วน enable = ตอนบูต และเจอโจทย์ “เปิด + ให้เปิดเองหลัง reboot” ก็ตอบ systemctl enable --now ชื่อ ได้ทันที