Beberapa bulan yang lalu, saya meminta komunitas kontributor Aktifkan Sysadmin untuk membantu saya membuat daftar perintah mereka yang paling penting. Setelah memproses hasilnya, 17 perintah muncul sebagai penting atau setidaknya sangat bermanfaat bagi pekerjaan sysadmin Linux. Jadi tanpa penundaan lebih lanjut, mari kita lompat ke ini.
[ Ingin mempelajari lebih lanjut tentang perintah jaringan? Baca bagian pertama dari daftar perintah crowd-source kami ]
temukan —Perintah ini adalah bagian dari findutils
dan memungkinkan untuk perintah pencarian khusus. Misalnya, jika Anda ingin menemukan direktori yang cocok dengan nama tertentu, Anda dapat menggunakan sesuatu seperti ini:
find path/ -type d -iname '*dir_name*'
Anda dapat menemukan informasi lebih lanjut tentang perintah tersebut di sini.
ls+xargs —Pasangan ini baru bagiku; namun, itu sangat menarik untuk dipelajari dan memiliki beberapa aplikasi yang berpotensi mengubah permainan. xargs
memungkinkan Anda untuk menjalankan perintah tambahan terhadap output dari perintah yang diberikan. Contoh super mendasar dari hal ini dapat dilihat saat memasangkan dengan ls
memerintah. Misalnya, jika Anda ingin cat
semua file yang terdaftar oleh ls
, Anda dapat menggunakan sesuatu seperti ini:
$ ls
1.file 2.file 3.file
$ ls | xargs cat
you are reading file 1
you are reading file 2
you are reading file 3
Lihat pandangan mendalam tentang xargs dari HowtoGeek
awk/sed/(e)grep —Trio ini disebut lebih sering daripada perintah lainnya oleh komunitas kami. Sungguh membuka mata untuk melihat betapa pentingnya perintah ini bagi komunitas dan sysadmin secara keseluruhan. Mari kita fokus pada grep
pertama.
grep —Grep luar biasa, tidak bohong. Jika Anda belum tahu tentang grep
(dan jujur saja, itu setidaknya mungkin, jika Anda baru mengenal baris perintah Linux), kenali itu. grep
adalah alat yang memungkinkan Anda memfilter keluaran standar dari apa saja di baris perintah. Anda dapat grep
untuk kata-kata yang ingin Anda temukan, atau balikkan itu untuk menunjukkan kepada Anda segala sesuatu yang TIDAK cocok dengan kata kunci Anda. Kami bahkan akan berbicara sedikit tentang alat yang sangat mirip yang memperluas grep
sedikit. Berikut adalah beberapa contohnya.
Untuk menunjukkan kepada Anda semua baris dalam file tertentu yang menyertakan kata “error” misalnya, Anda akan melakukan sesuatu seperti ini:
$ cat file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.
Then we have a warning.
and a WARNING
and then of course Warning.
$ grep error file.txt
This line contains an error.
$
Itulah yang Anda sebut sebagai grep
Inklusif . Anda juga dapat membalikkannya dengan menggunakan tanda pengecualian. Katakanlah Anda ingin melihat semua opsi konfigurasi di sshd config
yang tidak dikomentari, Anda dapat melakukan ini:
# grep -v \# /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
… snip ...
Subsystem sftp /usr/libexec/openssh/sftp-server
#
Perlu dicatat bahwa grep
peka huruf besar/kecil, seperti banyak hal di Bash. Jadi mencari "kesalahan" tidak akan menemukan "Kesalahan" atau "KESALAHAN". Anda dapat memberi tahu grep
untuk memfilter dengan cara yang tidak peka huruf besar/kecil menggunakan -i
bendera.
$ grep -i eRRor file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.
Ini akan cocok dengan error, ERROR, erRoR, atau apa pun, asalkan hurufnya sama.
Sekarang, saya bilang Anda bisa menggunakan grep
untuk memfilter output dari perintah apa pun, kan? Anda melakukannya dengan pengalihan output menggunakan pipa. Ini sangat berguna untuk hal-hal seperti memfilter log, bahkan menggunakan tail -f
.
# tail -f /var/log/messages | grep -i error
Ada lebih banyak opsi untuk grep
, termasuk pemfilteran berdasarkan file kata kunci, ekspresi reguler, Anda bahkan dapat mewarnai output. Saya sarankan Anda membiasakan diri dengan halaman manual jika Anda ingin tahu lebih banyak.
egrep —Sekarang, bagaimana jika Anda ingin memfilter lebih dari satu kata? Saya selalu menggunakan egrep
untuk ini.
Katakanlah Anda ingin grep
pada kesalahan, atau peringatan, Anda dapat melakukan sesuatu seperti ini:
$ egrep 'error|warning' file.txt
This line contains an error.
Then we have a warning.
egrep
akan mendukung pola lain, saya yakin, tetapi yang di sana adalah pola yang selalu saya gunakan, dan saya merasa itu sangat berguna.
awk —The awk
command mengimplementasikan bahasa pemrograman AWK untuk memproses teks, dan ini sangat baik dalam memproses data yang diatur dalam kolom. Perintah ini tersedia di sebagian besar jika tidak semua distribusi Linux serta sistem operasi UNIX lainnya.
Sysadmin biasanya menggunakan awk
untuk mengekstrak data dari file atau disalurkan dari output perintah lain di baris perintah atau skrip Shell. Aktifkan awk
dengan menjalankan perintah yang memberikan tindakan antara '{}'
. Anda dapat mereferensikan kolom sebagai variabel, seperti $1
untuk kolom pertama, $2
, untuk yang kedua, dan seterusnya. Secara default awk
menggunakan spasi sebagai pemisah kolom tetapi Anda dapat menggunakan karakter apa pun dengan menentukannya dengan tanda -F
.
Misalnya, untuk mencetak pemilik dan grup, kolom 3 dan 4 pada output ls -l
, pipa outputnya ke awk
seperti ini:
$ ls -l | awk '{ print $3,$4 }'
ricardo users
ricardo users
root root
...
Anda juga dapat memfilter baris dari input dengan memberikan ekspresi reguler opsional sebelum tindakan. Misalnya, untuk mencetak semua hostname (kolom 2) dari baris yang dimulai dengan angka di /etc/hosts
Anda file, gunakan awk
seperti ini:
$ awk '/^[0-9]/ { print $2 }' /etc/hosts
localhost
sat6server
tower01.olab.home.ca
...
awk
adalah perintah serbaguna yang mendukung seluruh bahasa pemrograman yang memungkinkan Anda melakukan banyak hal, seperti melakukan perhitungan, persyaratan, transformasi data, dan banyak lagi. Ini adalah opsi yang bagus untuk membantu Anda mengotomatiskan sistem Anda dan sering kali merupakan bagian dari skrip shell.
Untuk informasi lebih lanjut, lihat artikel Panduan pemula untuk melongo dan man
perintah halaman.
sed —Perintah sed
—kependekan dari editor aliran—memungkinkan Anda untuk memfilter dan mengedit aliran teks dengan cara skrip. Sysadmin sering menggunakan sed
dalam skrip Bash untuk mengubah teks yang disalurkan dari perintah lain atau langsung dari file. Dalam bentuknya yang paling dasar, sed
mencari dan mengganti teks. Misalnya, gunakan untuk mengganti string "aliran" dengan "teks" yang berasal dari pipa, seperti ini:
$ echo "This is a test stream" | sed 's/stream/text/'
This is a test text
Anda juga dapat mengganti teks dalam file dengan memberikan nama file sebagai parameter terakhir, seperti ini:
$ sed 's/pattern/replacement/' filename
Demi keamanan, sed
menampilkan hasilnya ke STDOUT tanpa memodifikasi file. Anda dapat mengarahkan output ke file baru untuk menyimpan hasilnya. Anda juga dapat mengubah file asli di tempat dengan memberikan -i
bendera.
Secara default, sed
hanya mengubah kemunculan pola pertama di setiap baris. Untuk mengubah perilaku ini, yang memungkinkan untuk mengganti semua contoh pola, berikan g
opsi di akhir sed
ekspresi perintah, seperti ini:
$ sed 's/pattern/replacement/g' filename
Selain penelusuran teks dasar, sed
mendukung pencocokan ekspresi reguler. Misalnya, gunakan ekspresi reguler “[Ww]ord” untuk menggantikan “Word” dan “word” di setiap baris:
$ echo "Word word WORD" | sed 's/[Ww]ord/text/g'
text text WORD
Perintah ini menawarkan banyak kemungkinan lain tetapi bahkan dengan penggunaan dasar ini, Anda dapat menghemat banyak waktu. Untuk informasi selengkapnya tentang opsi lain, lihat man
halaman untuk sed
.
tonton —Perintah ini memungkinkan Anda untuk menjalankan perintah/program berulang kali menggunakan interval tertentu. Secara default, intervalnya adalah setiap dua detik. Banyak sysadmin menggunakan perintah ini untuk memantau berbagai kondisi atau tugas sistem hingga selesai.
Misalnya, jika Anda ingin memantau penggunaan memori, Anda dapat menggunakan yang berikut: watch -d free -m
(-d
opsi menyoroti nilai yang berbeda dari run terakhir).
ikal —Perintah ini memungkinkan Anda untuk mentransfer data ke/dari server, dengan lebih banyak opsi daripada hanya HTTP/HTTPS. Ini bekerja tanpa interaksi pengguna dan sangat sering terlihat dalam situasi di mana Anda perlu melakukan panggilan REST API (GET, POST, PUT).
curl
mendukung banyak opsi untuk terhubung ke server, seperti SSL, menggunakan cookie, melanjutkan transfer file, dll. Ini hampir seperti Anda memiliki browser web yang dapat dijalankan dari baris perintah.
Contoh di bawah ini menunjukkan curl
untuk mengunduh file sederhana, tetapi membatasi bandwidth:
curl -o myfile.tar.gz --limit-rate 20K https://myserver.example.com/bigfile.tar.gz
Seperti yang dinyatakan manualnya, jumlah opsi yang tersedia untuk digunakan dengan curl
banyak. Beberapa yang sering saya gunakan adalah:
-s:
jalankan dalam mode senyap (tanpa bilah kemajuan)-k:
izinkan koneksi tidak aman (hanya saat menghubungkan ke server internal yang dikenal yang menggunakan sertifikat yang ditandatangani sendiri)
curl -X POST --header "Content-Type: application/json" \
--data '{"my_id": 5, "my_application": "moneymaker", "body": "showmethemoney"}' \
https://myserver.example.com/posts
Pada contoh di atas, saya melakukan POST dan meneruskan header dan tubuh .
email —mail
command adalah alat super rapi yang memungkinkan pengguna mengirim email langsung dari baris perintah, tanpa harus membuka browser atau klien khusus. Anda harus memiliki server SMTP yang berjalan secara lokal di mesin Anda, jadi itu adalah sesuatu yang harus diperhatikan.
Instal paket:
$ apt-get install mailutils
Untuk mengirim email dasar, Anda dapat menggunakan yang berikut ini:
$ mail -s "Subject Line" [email protected]
Saat Anda menekan Enter , Anda akan diminta dengan Cc bidang. Anda dapat menambahkan penerima tambahan atau cukup tekan Enter untuk melewati. Kemudian Anda akan mengetik pesan Anda. Setelah selesai, gunakan Ctrl+D untuk mengirim pesan untuk pengiriman. Seharusnya terlihat seperti ini setelah selesai:
$ mail -s "Subject Line" [email protected]
Cc: [email protected]
"Hello world"
<Ctrl + D>
Untuk informasi lebih lanjut tentang perintah ini, lihat artikel yang bagus ini.
tmux —tmux
perintah, yaitu multiplexer terminal, memungkinkan beberapa jendela di dalam satu jendela terminal. Anda dapat melompat di antara jendela dan bahkan membaginya menjadi panel individual, masing-masing dengan CLI-nya sendiri. Kami memiliki beberapa konten hebat yang dipublikasikan di sekitar tmux
dan bagaimana menggunakannya, jadi saya akan meninggalkan Anda tautan ke konten itu. Lihat tips menggunakan tmux untuk informasi selengkapnya.
sudo —Perintah sudo adalah jalan Anda menuju hak istimewa yang lebih tinggi. Semua sysadmin perlu tahu cara menggunakan perintah ini, apa bedanya dengan su
(yang banyak digunakan sebagai pengganti sudo
…ide buruk), dan cara memastikan akses oleh akun yang diperlukan. Saya menulis artikel intro ke sudo
jalan kembali saat itu mungkin berguna bagi Anda.
ssh —ssh
Perintah (secure shell) memungkinkan Anda menggunakan protokol kerja jarak jauh untuk mengakses dan memanipulasi server melalui koneksi jaringan. Jika Anda pernah bekerja dalam dukungan, atau dibantu oleh dukungan dalam hal ini, seringkali teknisi dukungan menggunakan ssh
untuk mengakses mesin atau server Anda.
Penggunaan perintah cukup mudah:
$ ssh username@hostname
Anda akan dimintai sandi, dan jika Anda dapat memberikan kredensial yang tepat, Anda akan segera masuk ke sistem yang diinginkan.
scp —Perintah salin aman (scp
) memungkinkan pengguna untuk menyalin file ke/dari sistem jarak jauh. Anda memerlukan ssh
diaktifkan di kedua ujung transaksi dan sintaks perintah yang tepat. Semua itu dan Anda harus baik-baik saja. Sintaks perintah akan terlihat seperti ini:
Untuk menyalin file DARI sistem jarak jauh ke direktori kerja saat ini:
scp user@ip_of_remote :/file/path/of/file.txt .
pkill —Utilitas perintah ini memungkinkan kita untuk memberi sinyal proses program yang sedang berjalan. Anda dapat mencari proses berdasarkan nama (penuh atau sebagian), pengguna, dll. Ada banyak pilihan untuk menggunakan utilitas ini, namun, secara default, perintah mengirimkan sinyal 15 (TERM) ke semua PIDS yang sesuai dengan kriteria Anda. Misalnya:
$ pkill chrome
Tindakan ini akan mematikan semua instance Chrome yang berjalan di mesin.
lsns —Perintah ini, mencantumkan spasi nama (lsns
), melakukan persis seperti yang dikatakannya—mencantumkan ruang nama. Gila kan? Bagaimanapun, ada banyak opsi yang dapat Anda tambahkan di sini: -J
(format json), -l
(format daftar), -n
(tanpa header), dll. Perintah ini adalah bagian dari util-linux
paket dan tersedia secara luas. Untuk informasi lebih lanjut seputar lsns
atau ruang nama secara umum, lihat artikel ini dari kontributor Steve Ovens 7 ruang nama Linux yang paling banyak digunakan.
berhenti berbagi —Yang ini berpusat di sekitar ruang nama juga. Perintah unshare menjalankan program di namespace yang baru dibuat. Secara default, namespace baru hanya akan bertahan selama ada program yang berjalan di dalamnya. Untuk informasi lebih lanjut tentang perintah ini, lihat man
halaman di mesin Linux favorit Anda.
[ Ingin menguji kemampuan sysadmin Anda? Ikuti penilaian keterampilan hari ini. ]
Jika Anda dapat mengelola untuk memasukkan alat-alat ini ke dalam alur kerja Anda di tempat yang masuk akal, Anda akan menjadi sysadmin yang lebih baik untuk melakukannya. Jika beberapa perintah favorit Anda tidak masuk dalam daftar, kami akan senang mendengarnya. Jangan ragu untuk mengirimkan artikel tentang perintah favorit Anda yang tidak kami daftarkan ke [email protected].