SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor

Arahan Linux asas yang anda perlukan di VPS

Baru sewa VPS murah? Arahan Linux mengikut tugas: baca log dengan tail, cari teks dengan grep, semak cakera dengan df dan hentikan proses dengan kill.

Verified Every command ran end-to-end on a fresh Ubuntu 24.04 server, October 7, 2026.

Arahan Linux yang anda perlukan pada hari pertama

Arahan Linux yang anda perlukan di VPS tidak sebanyak yang anda sangka. Kira-kira dua puluh arahan sudah cukup untuk melihat fail, membaca log, mencari teks, menyemak ruang cakera dan menghentikan proses. Panduan ini menyusun arahan itu mengikut tugas, jadi anda boleh terus ke bahagian yang anda perlukan.

VPS bermaksud virtual private server, iaitu pelayan maya yang anda sewa dan kawal sendiri. Selepas anda log masuk melalui SSH (Secure Shell), anda hanya nampak satu baris prompt dan kursor yang berkelip. Tiada menu dan tiada butang. Semua kerja dibuat dengan menaip arahan.

Setiap arahan di bawah diberi satu flag yang benar-benar digunakan oleh pentadbir pelayan. Flag ialah pilihan yang bermula dengan tanda sengkang, seperti -h atau -n. Jika ada panduan lain di laman ini yang menerangkan arahan itu dengan lebih mendalam, pautannya diberi di bahagian yang berkenaan.

Jika VPS anda masih baharu dan belum diamankan, buat dahulu langkah keselamatan 10 minit pertama pada VPS baharu. Arahan dalam panduan ini ditulis untuk Ubuntu 24.04. Kebanyakannya alat asas yang sama pada Debian dan distro lain, tetapi pengurus pakejnya berbeza. Jika anda belum pasti distro mana yang patut dipilih, baca cara memilih sistem pengendalian untuk VPS.

Sediakan direktori latihan dahulu

Semua contoh di sini dijalankan dalam satu direktori latihan. Dengan cara ini, anda tidak menyentuh fail sistem semasa belajar. Jalankan blok ini sekali:

mkdir -p ~/latihan-vps/konfig
cd ~/latihan-vps
seq 1 200 | sed 's/^/INFO permintaan nombor /' > app.log
echo "ERROR sambungan ke pangkalan data gagal" >> app.log
printf 'server_name contoh.my;\nlisten 80;\n' > konfig/laman.conf
echo "nota pertama" > nota.txt
touch kosong.txt

Tanda ~ ialah direktori rumah (home directory) anda. mkdir -p mencipta direktori berserta direktori induknya, dan tidak memberi ralat jika direktori itu sudah wujud. seq 1 200 mencetak nombor 1 hingga 200, satu nombor sebaris. sed pula menambah teks di awal setiap baris. Hasilnya, app.log ialah log palsu dengan 200 baris INFO dan satu baris ERROR di hujung. touch mencipta fail kosong jika fail itu belum ada.

Apa maksud paip (|) dan tanda >?

Dua simbol ini muncul dalam separuh contoh di bawah, jadi fahami dahulu.

Paip, iaitu simbol |, mengambil output arahan di sebelah kiri dan menghantarnya sebagai input kepada arahan di sebelah kanan. Anda sudah menggunakannya dalam blok di atas: seq mencetak nombor, dan sed menerima nombor itu lalu mengubahnya. Satu lagi contoh:

grep INFO app.log | wc -l

grep INFO app.log mencetak setiap baris yang mengandungi perkataan INFO. wc -l mengira bilangan baris yang diterimanya. Gabungkan kedua-duanya dan anda dapat bilangan baris INFO dalam log, tanpa melihat baris itu satu per satu. Jika anda mahu output yang sama dihantar ke dua tempat sekali gus, contohnya ke skrin dan ke fail, baca cara menghantar output ke dua arahan dengan tee.

Tanda > menghantar output ke fail dan menimpa isi fail itu. Tanda >> pula menambah output di hujung fail. Bezanya penting. Shell mengosongkan fail sasaran > sebelum arahan bermula, jadi tersalah taip > pada fail log yang penting akan memadam isinya serta-merta.

Di mana saya, dan apa yang ada di sini?

pwd
ls
ls -l
ls -la
cd konfig
pwd
cd ..

pwd (print working directory) mencetak direktori semasa anda. ls menyenaraikan isi direktori. cd menukar direktori, dan cd .. naik satu aras ke direktori induk. cd tanpa apa-apa terus membawa anda pulang ke direktori rumah.

ls -l ialah bentuk yang paling berguna, kerana ia mencetak satu baris untuk setiap fail dengan beberapa lajur. Bacanya dari kiri ke kanan:

  • Lajur pertama ialah mod fail, 10 aksara. Aksara pertama ialah jenis: - untuk fail biasa, d untuk direktori, l untuk pautan simbolik.
  • Sembilan aksara seterusnya ialah tiga kumpulan rwx, untuk pemilik, kumpulan dan orang lain. r bermaksud baca, w tulis, x laksana. Tanda - bermaksud kebenaran itu tiada.
  • Selepas itu datang bilangan pautan, nama pemilik, nama kumpulan, saiz dalam bait, masa terakhir diubah, dan akhir sekali nama fail.

Mod yang anda lihat pada fail latihan bergantung pada umask shell yang menciptanya. Umask ialah topeng yang membuang kebenaran tertentu daripada setiap fail baharu. Contohnya, umask 022 membuang kebenaran tulis daripada kumpulan dan orang lain. Taip umask untuk melihat nilai shell anda sendiri. Sebab itu dua pelayan boleh memberi mod berbeza untuk arahan yang sama, dan kedua-duanya betul. Untuk menukar pemilik dan kumpulan sesuatu fail, lihat penerangan arahan chown untuk menukar pemilik fail.

-a menunjukkan semua fail, termasuk fail tersembunyi yang namanya bermula dengan titik, seperti .bashrc dalam direktori rumah. Ia juga menunjukkan dua entri khas: . ialah direktori ini, dan .. ialah direktori induk. Tambah -h (ls -lh) jika anda mahu saiz dalam K, M atau G, bukan bait.

Bagaimana nak lihat 20 baris terakhir fail log?

Guna tail -n 20 namafail. Itu jawapan penuhnya.

cat nota.txt
head -n 5 app.log
tail -n 20 app.log
wc -l app.log

cat mencetak seluruh isi fail. Ia sesuai untuk fail pendek seperti nota.txt, tetapi jangan gunakannya pada log yang besar. Log pelayan boleh mencecah ratusan ribu baris, dan semuanya akan mengalir di skrin sehingga baris yang anda cari hilang. head -n 5 mencetak lima baris pertama. tail -n 20 mencetak dua puluh baris terakhir. Di situlah ralat terbaru biasanya berada, kerana log ditulis dari atas ke bawah. wc -l mengira bilangan baris dalam fail.

Pada VPS sebenar, log sistem disimpan di bawah /var/log. Untuk memantau log secara langsung, jalankan sendiri tail -f app.log. Arahan itu tidak tamat dan terus mencetak baris baharu apabila ia ditambah. Tekan Ctrl+C untuk berhenti.

Ada beberapa alat interaktif lain yang anda akan jumpa. Cuba sendiri, satu baris setiap satu:

  • less app.log membuka fail panjang satu skrin pada satu masa. Tekan q untuk keluar.
  • nano nota.txt ialah penyunting teks yang mudah. Ctrl+O menyimpan, Ctrl+X keluar.
  • vim nota.txt lebih berkuasa tetapi mengelirukan pada kali pertama. Tekan Esc, taip :q! dan tekan Enter untuk keluar tanpa menyimpan.

Mencari teks dalam fail dengan grep

grep ERROR app.log
grep -n ERROR app.log
grep -i error app.log
grep -v INFO app.log
grep -r listen konfig/
tail -n 50 app.log | grep ERROR

grep mencari baris yang mengandungi teks tertentu dan mencetak baris itu sahaja. Secara lalai grep membezakan huruf besar dan huruf kecil, jadi grep error tidak akan menjumpai baris yang bertulis ERROR. Flag -i mengabaikan beza itu. Itulah flag yang paling kerap anda perlukan semasa mencari dalam log.

-n menambah nombor baris di depan setiap padanan. Ia berguna apabila anda mahu membuka fail itu dalam penyunting dan terus ke baris tersebut. -v menterbalikkan carian: ia mencetak baris yang tidak mengandungi teks itu. Pada log yang penuh dengan INFO, grep -v INFO membuang baris rutin dan meninggalkan baris yang luar biasa. -r mencari dalam semua fail di bawah sesuatu direktori. Ia berguna apabila anda tahu nama tetapan tetapi tidak tahu fail mana yang memegangnya.

Baris terakhir menggabungkan dua arahan dengan paip: ambil 50 baris terakhir, kemudian tunjukkan yang mengandungi ERROR sahaja. Jika grep tidak mencetak apa-apa, tiada baris yang sepadan. Itu bukan ralat pada arahan anda.

Mencari fail dengan find

grep mencari isi fail. find pula mencari fail berdasarkan nama, jenis, saiz atau masa ia diubah.

find . -name "*.conf"
find . -type f -name "*.log"
find . -type f -empty
find . -type f -mmin -60

. bermaksud mula mencari dari direktori semasa, termasuk semua subdirektori. -name "*.conf" memadankan nama yang berakhir dengan .conf. Tanda petik itu wajib. Tanpanya, shell mengembangkan *.conf dahulu. Jika ada fail yang sepadan dalam direktori semasa, find menerima nama fail itu dan bukan corak yang anda maksudkan.

-type f mengehadkan hasil kepada fail biasa, manakala -type d untuk direktori. -empty mencari fail yang saiznya sifar, seperti kosong.txt yang kita cipta dengan touch. -mmin -60 mencari fail yang diubah dalam 60 minit terakhir. Ia berguna apabila anda mahu tahu apa yang baru berubah pada pelayan.

Menyalin, memindah dan memadam fail

cp nota.txt nota.bak
cp -r konfig konfig-salinan
mv nota.bak arkib.txt
mkdir simpanan
mv arkib.txt simpanan/
ls -l simpanan
rm simpanan/arkib.txt
rm -r konfig-salinan
rmdir simpanan

cp sumber sasaran menyalin fail. Untuk menyalin direktori, anda perlukan -r (rekursif). Tanpanya, cp enggan dan mencetak cp: -r not specified; omitting directory. mv mempunyai dua tugas. Ia memindahkan fail ke direktori lain, dan ia juga cara biasa untuk menamakan semula fail.

rm memadam fail, dan rm -r memadam direktori berserta seluruh isinya. Shell tiada tong sampah. Fail yang dipadam dengan rm tidak boleh dipulihkan dengan arahan biasa, jadi baca semula arahan sebelum menekan Enter. Gunakan rm -i jika anda mahu ditanya sebelum setiap fail dipadam. rmdir hanya memadam direktori yang kosong, dan ia gagal jika masih ada fail di dalamnya. Kegagalan itu satu perlindungan yang berguna.

Satu tabiat yang berbaloi: salin fail konfigurasi sebelum mengubahnya, contohnya cp laman.conf laman.conf.bak. Jika perubahan anda merosakkan perkhidmatan, anda boleh memulangkan fail asal dengan mv dalam beberapa saat.

Berapa banyak ruang cakera yang tinggal? df dan du

df -h
df -h /
du -sh ~/latihan-vps
du -h --max-depth=1 ~/latihan-vps | sort -h

df (disk free) melaporkan ruang setiap sistem fail yang dilekapkan (mounted). -h menukar bait kepada unit yang mudah dibaca. Lajurnya:

  • Filesystem: peranti atau sumber sistem fail itu.
  • Size, Used dan Avail: jumlah saiz, ruang yang sudah digunakan, dan ruang yang masih boleh ditulis.
  • Use%: peratus yang sudah digunakan. Inilah nombor yang patut anda pantau.
  • Mounted on: direktori tempat sistem fail itu boleh dicapai.

Baris yang paling penting ialah baris yang lajur Mounted on bernilai /, iaitu cakera akar. df -h / mencetak baris itu sahaja. Apabila Use% cakera akar menghampiri 100%, perkhidmatan mula gagal menulis log dan fail sementara. Unit G yang dicetak oleh df -h ialah gibibait (1024 × 1024 × 1024 bait). Itulah sebabnya cakera 500GB kelihatan seperti 465GB.

du (disk usage) menjawab soalan yang berlainan: berapa banyak ruang yang digunakan oleh direktori ini? -s meringkaskan semuanya kepada satu jumlah, dan -h memudahkan unit. --max-depth=1 mencetak satu jumlah untuk setiap subdirektori. sort -h faham unit seperti K dan M, jadi direktori terbesar berada di baris terakhir. Pada pelayan sebenar, arahan yang sama dihalakan ke direktori yang mencurigakan, dan /var/log sering menjadi puncanya.

Kadang-kadang df mengatakan cakera penuh tetapi jumlah du jauh lebih kecil. Satu sebab biasa ialah fail yang telah dipadam tetapi masih dibuka oleh proses yang sedang berjalan. Kernel tidak membebaskan ruang itu selagi proses tersebut masih memegang fail. Panduan tentang cakera penuh apabila df dan du tidak sepadan menunjukkan cara mencari proses itu.

Adakah RAM saya cukup? free

free -h

free melaporkan ingatan, iaitu RAM (random access memory), dan swap. Baris Mem ialah RAM fizikal. Baris Swap ialah ruang cakera yang digunakan apabila RAM habis. Jika VPS anda tiada swap, baris itu menunjukkan sifar. Lajurnya ialah total, used, free, shared, buff/cache dan available.

Kesilapan biasa ialah membaca lajur free dan panik kerana nilainya kecil. Kernel Linux menggunakan RAM yang tidak diperlukan untuk menyimpan cache fail yang dibaca dari cakera, dan ruang itu dikira dalam buff/cache. Apabila program memerlukan ingatan, kernel melepaskan cache itu. Jadi lajur yang perlu dibaca ialah available, iaitu anggaran ingatan yang boleh diberi kepada program baharu tanpa menggunakan swap. Jika available rendah dan used pada baris Swap terus meningkat, barulah pelayan anda benar-benar kekurangan RAM.

Untuk melihat nilai ini berubah setiap beberapa saat, ikut panduan arahan watch untuk memantau output secara berulang.

Proses: ps dan kill, diuji pada proses anda sendiri

Proses ialah program yang sedang berjalan. Setiap proses ada PID (process ID), iaitu nombor pengenalan yang unik. Untuk berlatih dengan selamat, mulakan proses anda sendiri dan hentikan proses itu, bukan proses sistem.

sleep 600 &
PID=$!
echo "$PID"
ps -p "$PID" -o pid,user,etime,cmd
kill "$PID"
sleep 1
ps -p "$PID" -o pid,cmd || echo "proses $PID sudah tamat"

sleep 600 menunggu 600 saat dan tidak membuat apa-apa lagi, jadi ia sasaran latihan yang selamat. Tanda & di hujung menjalankannya di latar belakang, dan prompt kembali serta-merta. Pemboleh ubah khas $! memegang PID proses latar belakang yang terakhir dimulakan, dan kita simpan nilai itu dalam PID.

ps -p menunjukkan satu proses sahaja, dan -o memilih lajur: pid, user (pemilik proses), etime (masa berlalu sejak proses bermula) dan cmd (arahan penuh). kill menghentikan proses itu. sleep 1 memberi masa kepada shell untuk mengutip proses yang sudah mati. Selepas itu ps -p gagal kerana tiada lagi proses dengan PID tersebut. || menjalankan arahan di sebelah kanan hanya apabila arahan di sebelah kiri gagal, jadi mesej "sudah tamat" itu dicetak hanya jika proses benar-benar sudah hilang.

Untuk melihat proses yang menggunakan paling banyak ingatan pada seluruh pelayan:

ps aux --sort=-%mem | head -n 6

ps aux menyenaraikan setiap proses milik semua pengguna. --sort=-%mem menyusunnya dari penggunaan ingatan tertinggi, dan head -n 6 mengambil baris tajuk serta lima proses teratas. Lajur yang penting ialah USER (pemilik), PID (nombor proses), %CPU dan %MEM (bahagian CPU, central processing unit, dan RAM yang digunakan), RSS (ingatan sebenar dalam RAM, dalam kibibait), STAT (keadaan proses) dan COMMAND (arahan yang memulakannya). Tukar kepada --sort=-%cpu untuk mencari proses yang membebankan pemproses.

Secara lalai, kill menghantar isyarat SIGTERM. Program yang menerimanya boleh menyimpan kerja, memadam fail kunci dan keluar dengan kemas. kill -9 menghantar SIGKILL. Isyarat ini tidak boleh ditangkap oleh program, jadi kernel menamatkannya serta-merta tanpa peluang untuk membersihkan apa-apa. Gunakan -9 hanya jika SIGTERM tidak berkesan selepas beberapa saat. Pengguna biasa hanya boleh menghentikan proses miliknya sendiri. Cubaan ke atas proses pengguna lain gagal dengan Operation not permitted.

Untuk perkhidmatan seperti nginx atau MySQL, gunakan systemctl dan bukan kill. Perkhidmatan itu diuruskan oleh systemd, dan systemd mungkin memulakannya semula sebaik sahaja anda menghentikannya. Satu lagi perkara: proses yang dimulakan dengan & masih terikat pada sesi SSH anda, dan ia boleh terhenti apabila sambungan terputus. Untuk kerja yang panjang, jalankannya dalam tmux, seperti dalam panduan menjalankan sesi panjang dalam tmux di VPS.

Siapa saya di pelayan ini? whoami dan id

whoami
id

whoami mencetak nama pengguna anda. id memberi gambaran yang lebih lengkap: uid ialah nombor pengguna, gid ialah kumpulan utama, dan groups ialah semua kumpulan yang anda anggotai. Kumpulan menentukan fail mana yang boleh anda baca dan tulis, mengikut lajur kumpulan dalam ls -l tadi.

uid=0 bermaksud anda root. Root boleh melakukan apa sahaja tanpa bertanya, termasuk merosakkan sistem dengan satu arahan yang tersalah taip. Pada Ubuntu, pengguna dalam kumpulan sudo boleh menjalankan arahan sebagai root dengan meletakkan sudo di depan arahan itu. Cara yang lebih selamat ialah bekerja sebagai pengguna biasa dan menggunakan sudo hanya apabila perlu. Jika anda masih log masuk sebagai root dengan kata laluan daripada pembekal, tukar kata laluan root di Ubuntu dahulu.

Bagaimana nak dapatkan bantuan tanpa internet?

ls --help | head -n 20

Hampir setiap arahan menerima --help dan mencetak senarai flagnya. Sesetengah imej VPS yang minimum tidak memasang halaman manual, jadi man ls mungkin tidak menunjukkan apa-apa yang berguna. --help tetap ada kerana ia sebahagian daripada program itu sendiri. Paip ke head menghalang output yang panjang daripada mengalir melepasi skrin.

Lima arahan untuk dicuba dahulu pada VPS baharu

Anda tidak perlu menghafal 50 arahan. Lima arahan ini memberitahu keadaan pelayan anda dalam masa kurang daripada seminit:

  1. id: siapa anda, dan adakah anda root.
  2. df -h /: berapa peratus cakera akar sudah digunakan.
  3. free -h: berapa banyak RAM yang masih available.
  4. ps aux --sort=-%mem | head -n 6: proses mana yang menggunakan paling banyak ingatan.
  5. tail -n 20 pada fail log: apa yang berlaku baru-baru ini.
id
df -h /
free -h
ps aux --sort=-%mem | head -n 6
tail -n 20 ~/latihan-vps/app.log

Pada pelayan sebenar, halakan tail ke fail log perkhidmatan anda di bawah /var/log. Apabila selesai berlatih, padam direktori latihan:

cd ~
rm -r ~/latihan-vps

FAQ

Bagaimana nak lihat 20 baris terakhir fail log di Linux?

Guna tail -n 20 namafail, contohnya tail -n 20 app.log. Tukar 20 kepada bilangan baris yang anda mahu. Untuk terus memantau baris baharu semasa ia ditulis, guna tail -f namafail dan tekan Ctrl+C untuk berhenti. Sesetengah fail di bawah /var/log hanya boleh dibaca oleh root. Jika tail mencetak Permission denied, letakkan sudo di depan arahan itu.

Kenapa free menunjukkan RAM hampir penuh walaupun pelayan tidak sibuk?

Kernel Linux menggunakan RAM yang tidak diperlukan sebagai cache untuk fail yang dibaca dari cakera. Ruang itu muncul dalam lajur buff/cache dan dilepaskan sebaik sahaja program memerlukannya. Jadi baca lajur available dalam free -h, bukan lajur free. Pelayan benar-benar kekurangan RAM hanya apabila available rendah dan penggunaan swap terus meningkat.

Apa beza kill dan kill -9?

kill PID menghantar SIGTERM, yang meminta program berhenti dan memberinya peluang untuk menyimpan data dan keluar dengan kemas. kill -9 PID menghantar SIGKILL. Program tidak boleh menangkap isyarat ini, jadi kernel menamatkannya serta-merta tanpa sebarang pembersihan. Cuba kill biasa dahulu, dan guna -9 hanya jika proses masih hidup selepas beberapa saat. Untuk perkhidmatan yang diurus oleh systemd, guna systemctl stop sebagai ganti.

Bolehkah saya memulihkan fail yang dipadam dengan rm?

Tidak dengan arahan biasa. Shell Linux tiada tong sampah, jadi rm membuang fail itu terus dari sistem fail. Satu-satunya cara yang boleh dipercayai ialah sandaran (backup) atau snapshot daripada pembekal VPS anda. Gunakan rm -i supaya anda ditanya sebelum setiap fail dipadam, dan salin fail konfigurasi dengan cp sebelum mengubahnya.

Kenapa df dan du menunjukkan angka yang berbeza?

df membaca ruang yang digunakan daripada sistem fail itu sendiri, manakala du menjumlahkan saiz fail yang masih kelihatan dalam direktori. Fail yang telah dipadam tetapi masih dibuka oleh proses yang berjalan dikira oleh df tetapi tidak oleh du. Ruangnya hanya dibebaskan apabila proses itu menutup fail tersebut, jadi memulakan semula proses itu biasanya memulangkan ruang yang hilang.