10 Essential Linux Commands Every Developer Should Master
This guide introduces ten fundamental Linux commands—pgrep, pstree, bc, split, nl, mkfifo, ldd, col, xmlwf, and lsof—explaining their purposes, typical usage examples, and how they help developers and system administrators efficiently manage processes, files, and system resources.
According to the speaker, Linux is the most suitable operating system for development because it gives users full control, offering openness, freedom, and honesty, which are its greatest charms. More enterprises are choosing Linux for servers, making it essential for learners to understand Linux fundamentals.
01 pgrep
The pgrep command, related to processes, lists process IDs matching a pattern. $ pgrep -u hchen22441 22444 This is equivalent to:
ps -ef | egrep '^hchen' | awk '{print $2}'02 pstree
pstreedisplays processes in a tree format.
[hchen@RHELSVR5 ~]$ pstree
init-+-acpid
|-auditd-+-python
| `-{auditd}
|-automount---4*[{automount}]
|-backup.sh---sleep
|-dbus-daemon
|-events/0
|-events/1
|-hald---hald-runner---hald-addon-acpi
|-httpd---10*[httpd]
|-irqbalance
|-khelper
|-klogd
|-ksoftirqd/0
|-ksoftirqd/1
|-kthread-+-aio/0
| |-aio/1
| |-ata/0
| |-ata/1
| |-ata_aux
| |-cqueue/0
| |-cqueue/1
| |-kacpid
| |-kauditd
| |-kblockd/0
| |-kblockd/1
| |-kedac
| |-khubd
| |-kjournald*6
| |-kmirrord
| |-kpsmoused
| |-kseriod
| |-kswapd0
| |-pdflush*2
| |-scsi_eh_0
| |-scsi_eh_1
| |-xenbus
| `-xenwatch
|-migration/0
|-migration/1
|-mingetty*6
|-multilog*3
|-mysqld_safe---mysqld---9*[{mysqld}]
|-smartd
|-sshd---sshd---sshd---bash---pstree
|-svscanboot---svscan-+-3*[supervise-run]
| |-supervise---qmail-send-+-qmail-clean
| | |-qmail-lspawn
| | `-qmail-rspawn
| `-supervise*-2[tcpserver]
|-syslogd
|-udevd
|-watchdog/0
|-watchdog/1
-xinetd03 bc
bcprovides high‑precision arithmetic, such as calculating square roots. Example script sqrt:
#!/bin/bash
if [ $# -ne 1 ]
then
echo 'Usage: sqrt number'
exit 1
else
echo -e "sqrt($1)
quit
" | bc -q -i
fiUsage:
[hchen@RHELSVR5]$ ./sqrt 36
6
[hchen@RHELSVR5]$ ./sqrt 2.0000
1.4142
[hchen@RHELSVR5]$ ./sqrt 10.0000
3.162204 split
splitdivides a large file into smaller pieces.
[hchen@RHELSVR5 applebak]# ls -l largefile.tar.gz
-rw-r--r-- 1 hchen hchen 436774774 Apr 17 02:00 largefile.tar.gz
[hchen@RHELSVR5 applebak]# split -b 50m largefile.tar.gz LF_
[hchen@RHELSVR5]# ls -l LF_*
-rw-r--r-- 1 hchen hchen 52428800 May 10 18:34 LF_aa
-rw-r--r-- 1 hchen hchen 52428800 May 10 18:34 LF_ab
... (other parts) ...
-rw-r--r-- 1 hchen hchen 17344374 May 10 18:35 LF_aiRecombine with:
[hchen@RHELSVR5]# cat LF_* > largefile.tar.gz05 nl
nlnumbers lines of a file, similar to cat but adds line numbers.
[hchen@RHELSVR5 include]# nl stdio.h | head -n 10
1 /* Define ISO C stdio on top of C++ iostreams.
2 Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8 The GNU C Library is distributed in the hope that it will be useful,
9 ...06 mkfifo
mkfifocreates a named pipe.
[hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe
[hchen@RHELSVR5 ~]# ls -l /tmp
prw-rw-r-- 1 hchen hchen 0 May 10 18:58 hchenpipeWrite to the pipe (blocks until read): [hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe Read from another shell to unblock:
[hchen@RHELSVR5 ~]# head /tmp/hchenpipe
drwx------ 8 hchen hchen 4096 May 10 18:27 .
... (directory listing) ...07 ldd
lddshows the shared libraries required by an executable.
[hchen@RHELSVR5 ~]# ldd /usr/bin/java
linux-gate.so.1 => (0x00cd9000)
libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)
libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000)
... (other libraries) ...08 col
colconverts man page output to plain text.
# PAGER=cat man less | col -b > less.txt09 xmlwf
xmlwfvalidates an XML document.
[hchen@RHELSVR5 ~]# curl 'https://coolshell.cn/?feed=rss2' > cocre.xml
... (download output) ...
[hchen@RHELSVR5 ~]# xmlwf cocre.xml
[hchen@RHELSVR5 ~]# perl -i -pe 's@<link>@<br>@g' cocre.xml
[hchen@RHELSVR5 ~]# xmlwf cocre.xmlcocre.xml:13:23: mismatched tag10 lsof
lsoflists open files and the processes using them.
[root@RHELSVR5 ~]# lsof | grep TCPhttpd
548 apache 4u IPv6 14300967 TCP *:http (LISTEN)
... (other entries) ...
sshd 10767 hchen 3u IPv6 160731956 TCP 210.51.0.232->123.117.239.68:31810 (ESTABLISHED)Source: WeChat public account 老九课堂.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Efficient Ops
This public account is maintained by Xiaotianguo and friends, regularly publishing widely-read original technical articles. We focus on operations transformation and accompany you throughout your operations career, growing together happily.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
