跳至内容
Linux Common Commands

Linux Common Commands

April 16, 2026

Linux Commands in Read-World:

Commands:


ls  cp  find  |  xargs  cat  |  grep  |  sort  |  uniq  >  >>

```bash

串联命令:

```bash

find  =>  xargs  ==>  cat

```bash


查找文件 到  处理文件内容   

```bash

find . -type f -name `"*.txt"`

mkdir -p ./test

ls .

cp ./test ./test.backup

ls ./

cd ./test

touch test{1..3}.txt

ls .



####The `sort` command is used to sort lines of text files.

####It's a handy tool for organizing data in files.

```bash
###vim  4_17.txt
apples,1
kiwis,3
kiwis,4
oranges,3
banana,10

###############################################
###sort 4_17.txt
[devops@lb01 ~/scripts/shell]$ sort ./4_17.txt
apples,1
banana,10
kiwis,3
kiwis,4
oranges,3


#####################################################
###reverse:
[devops@lb01 ~/scripts/shell]$ sort -r ./4_17.txt
oranges,3
kiwis,4
kiwis,3
banana,10
apples,1

######################################################
###number:

[devops@lb01 ~/scripts/shell]$ sort -r -t "," -k 2 -n ./4_17.txt
banana,10
kiwis,4
oranges,3
kiwis,3
apples,1

######################################################

```bash


####man ls (for more help.)


####Alian:To create an alias, use the syntax `alias name='command'`, where `name` is the shortcut you want to use, and `command` is the full command you want to run.

```bash

[devops@lb01 ~/scripts/shell]$ alias ll='ls -la'
[devops@lb01 ~/scripts/shell]$ ll
total 28
drwxr-xr-x 2 devops devops   122 Apr 15 03:28 .
drwxr-xr-x 3 devops devops    19 Apr 10 17:56 ..
-rw-r--r-- 1 devops devops   247 Apr 15 00:41 4_17.sh
-rw-r--r-- 1 devops devops    45 Apr 15 03:20 4_17.txt
-rw-r--r-- 1 devops devops    36 Apr 14 21:07 first.sh
-rw-r--r-- 1 devops devops    45 Apr 14 06:46 server_performance_stats
-rw-r--r-- 1 devops devops 12288 Apr 14 06:47 .server_performance_stats.swp

###In this example, `ll` lists all files in long format.

###################################################
###git status

$ alias gs="git status"

wang@DESKTOP-IE4JJEG MINGW64 /d/Git/cloud-native-devops-platform (main)
$ gs
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

############################################
```bash

####To copy a file to a remote host, use `scp file user@hostname:/path`:

```bash
[devops@lb01 ~/scripts/shell]$ scp ./4_17.sh root@10.0.0.6:/
root@10.0.0.6's password:
4_17.sh                                       100%  247   115.1KB/s   00:00

###################################################
#In other machine to detective the file: 
[root@web01 ~]#ip a | grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 10.0.0.6/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@web01 ~]#ls
anaconda-ks.cfg  DingDing_py  python.py  ZipFile.py
[root@web01 ~]#ls / | grep 4
4_17.sh
lib64

#Congratuate,it's successful!!!
```bash



####Clear the file contents:

```bash
[devops@lb01 ~/scripts/shell]$  > ./4_17.txt
[devops@lb01 ~/scripts/shell]$
```bash

---


####The `awk` command is used for pattern scanning and processing language.

####It's useful for handling text files and used for data extraction and reporting.

```bash
#Edit the file:
id,Created,Amount,Currency,Description,Customer
1,2024-11-01,100,USD,Payment,John Doe
2,2024-11-02,200,EUR,Refund,Jane Smith
3,2024-11-03,150,USD,Purchase,Emily Davis
4,2024-11-04,175,GBP,Subscription,Michael Brown

###############################################
#output:
[devops@lb01 ~/scripts/shell]$ less ./4_17.txt | awk -F"," '{print $1}'
id
1
2
3
4

```bash

---

###Sed
####The `sed` command is a stream editor used to perform basic text transformations on an input stream (a file or input from a pipeline).

####It's a powerful tool for making quick edits to files or streams of data.


```bash
#edit the file:
id,Created,Amount,Currency,Description,Customer
1,2024-11-01,100,USD,Payment,John Doe
2,2024-11-02,200,EUR,Refund,Jane Smith
3,2024-11-03,150,USD,Purchase,Emily Davis
4,2024-11-04,175,GBP,Subscription,Michael Brown

####################################################
#replace "2026"
[devops@lb01 ~/scripts/shell]$ sed 's/2024/2026/' ./4_17.txt
id,Created,Amount,Currency,Description,Customer
1,2026-11-01,100,USD,Payment,John Doe
2,2026-11-02,200,EUR,Refund,Jane Smith
3,2026-11-03,150,USD,Purchase,Emily Davis
4,2026-11-04,175,GBP,Subscription,Michael Brown


#################################################

```bash


####Options

The `sed` command has options to change how it works:

- `-i` - Edit files directly without needing to save separately
- `-e` - Add the script to the commands to be executed
- `-n` - Don't automatically print lines
- `-r` - Use extended regular expressions
- `-f` - Add script from a file
- `-l` - Specify line length for `l` command




####Suppress Printing  

- The `-n` option suppresses automatic printing of pattern space.

- By default, `sed` prints each line of input to the output. Using `-n` allows you to control which lines are printed, typically with the `p` command.

```bash

[devops@lb01 ~/test]$ sed -n 's/sa/saaaa/p' ./test1.txt
saaaafj
saaaalj

#less test1.txt
safj
salj
aslkj


[devops@lb01 ~/test]$ sed -n 's/as/aaa/p' ./test1.txt
aaalkj
[devops@lb01 ~/test]$ less ./test1.txt
[devops@lb01 ~/test]$ cat ./test1.txt
safj
salj
aslkj

```bash


####Extended Regular Expressions

- The `-r` option allows the use of extended regular expressions, which provide more powerful pattern matching capabilities than basic regular expressions.

- Without this option, `sed` uses basic regular expressions.

```bash

#text
safj
salj
aslkj

#######################################
[devops@lb01 ~/test]$ sed -r 's/(safj|salj)/aaaa/g' test1.txt
aaaa
aaaa
aslkj

```bash


####Script from a File

- The `-f` option allows you to add a script from a file, which is useful for executing complex or multiple `sed` commands.

- Without this option, you must specify the script directly in the command line.



```bash

#Content of `script.sed` file:  
s/salj/saaalj/g


#text
safj
salj
aslkj

################################################
#sed -f ./script.sed ./test1.txt
[devops@lb01 ~/test]$ sed -f ./script.sed ./test1.txt
safj
saaalj
aslkj

```bash

####Specify Line Length

- The `-l` option specifies the line length for the `l` command, which prints lines with non-printable characters.

- This option is useful for formatting output when dealing with long lines.


```bash

#text:
alfjioaj#!$ 5345 $%#joi540238709@%%9 345%$$( lkj435 %$%

#sed -l 10 'l' ./test1.txt
[devops@lb01 ~/test]$ sed -l 10 'l' ./test1.txt
alfjioaj#\
!$ 5345 $\
%#joi540\
238709@%%\
9 345%$$(\
 lkj435 %\
$%$
alfjioaj#!$ 5345 $%#joi540238709@%%9 345%$$( lkj435 %$%

```bash

- This option appends a `$` at the end of each line to indicate the end of the line.
- 默认 `$` 换行,即使指定宽度 -1 N 也要遵守。


######Redirect Output to a File

- To save the changes made by `sed` to a file, you can redirect the output to a new file. This is useful when you don't want to overwrite the `original file` .


```bash

#sed 's/a/aaaaaa/g' ./test1.txt > ./test2.txt

[devops@lb01 ~/test]$ sed 's/a/aaaaaa/g' ./test1.txt > ./test2.txt
[devops@lb01 ~/test]$ less ./test2.txt
aaaaaalfjioaaaaaaj#!$ 5345 $%#joi540238709@%%9 345%$$( lkj435 %$%

```bash


####Using `sed` for Advanced Text Processing

- Sed can perform advanced text processing tasks. For example, `sed 's/^/Prefix: /' example_text.txt` adds a prefix to each line.


```bash

#text:
alfjioaj#!$ 5345 $%#joi540238709@%%9 345%$$( lkj435 %$%
safdsafsd
arewg
fdsbsfdg


[devops@lb01 ~/test]$ sed 's/^/prefix: /g' ./test1.txt
prefix: alfjioaj#!$ 5345 $%#joi540238709@%%9 345%$$( lkj435 %$%
prefix: safdsafsd
prefix: arewg
prefix: fdsbsfdg

```bash

####Common Errors and Troubleshooting

####When using `sed`, you might encounter errors such as:

- `"sed: command garbled" `- Check your command syntax.
- `"sed: can't read file"` - Ensure the file path is correct and accessible.

- Debugging tips include using `echo` to print intermediate results and verify command logic.


###rmdir

```bash

 `rmdir` is a command-line utility used to remove empty directories. It's a straightforward tool that helps in cleaning up directory structures by deleting directories that no longer contain any files or subdirectories. The command will return an error if the directory is not empty.

```bash



###Bash `cut` Command - Remove Sections from Lines

####The `cut` command is used to remove sections from each line of files.

####It's a useful tool for extracting specific fields of data from a file or output stream.

####All examples below use the `example.txt` file:

```bash

Kai Refsnes 30,Norway 
Robin Smith 25,Denmark 
Sienna Davis 40,Germany

```bash


####Basic Usage

- To extract the first field of a file, use `cut -f1 example.txt`:

```bash

[devops@lb01 ~]$ cut -f1 example.txt
Kai
Robin
Sienna

```bash

- By default, `cut` uses a tab as the delimiter.

####Options

#####The `cut` command has options to change how it works:

- `-d` - Choose what separates the fields
- `-f` - Select specific fields to display
- `--complement` - Show all fields except the selected ones


####Specify a Delimiter

- The `-d` option allows you to choose what separates the fields.

```bash
#text:
Kai     Refsnes 30,Norway
Robin   Smith   25,Denmark
Sienna  Davis   40,Germany

[devops@lb01 ~]$ cut -d ',' -f2 example.txt
Norway
Denmark
Germany
```bash

####Select Specific Fields

- The `-f` option allows you to select specific fields to display.

```bash
#text:
Kai     Refsnes 30,Norway
Robin   Smith   25,Denmark
Sienna  Davis   40,Germany


[devops@lb01 ~]$ cut -f1-2 example.txt
Kai     Refsnes
Robin   Smith
Sienna  Davis

```bash


####Show Complement

The `--complement` option allows you to show all fields except the selected ones.

```bash

#text:
Kai     Refsnes 30,Norway
Robin   Smith   25,Denmark
Sienna  Davis   40,Germany


[devops@lb01 ~]$ cut -f1 --complement example.txt
Refsnes 30,Norway
Smith   25,Denmark
Davis   40,Germany

```bash



####Advanced Field Extraction

- Cut can perform advanced field extraction tasks.

- For example, `cut -d   -f2-3 example_data.txt` extracts fields 2 through 3 from the file.


```bash

#text:

Kai     Refsnes 30,Norway
Robin   Smith   25,Denmark
Sienna  Davis   40,Germany

[devops@lb01 ~]$ cut -d ' ' -f2-3 example.txt
        Refsnes 30,Norway
Robin   Smith   25,Denmark
Sienna  Davis   40,Germany

```bash



####Common Errors and Troubleshooting

#####When using `cut`, you might encounter errors such as:

- "cut: delimiter must be a single character" - Ensure the delimiter is correctly specified.
- "cut: fields and positions are numbered from 1" - Remember that field and position numbering starts at 1.

####Debugging tips include checking the delimiter and field specifications to ensure they match the file's format.


---


###Bash `sort` Command - Sort Lines of Text Files


####Using the `sort` Command

#####The `sort` command is used to sort lines of text files.

#####It's a handy tool for organizing data in files.




### Bash `tail` Command - Display Last Part of Files



- The `tail` command is used to display the last part of files.

- It's particularly useful for viewing the end of log files or any file that is being updated in real-time.

#### Syntax

- The basic syntax of the `tail` command is:

```bashbash

tail [OPTION]... [FILE]...

```bash

### Example

```bash

[devops@lb01 ~]$ tail /etc/passwd
sssd:x:998:997:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/usr/sbin/nologin
chrony:x:997:996:chrony system user:/var/lib/chrony:/sbin/nologin
rsync:x:1000:1000::/home/rsync:/sbin/nologin
ftpuser:x:1001:1001::/home/ftpuser:/bin/bash
devops:x:1002:1002::/home/devops:/bin/bash
deploy_bot:x:1003:1003::/home/deploy_bot:/bin/bash
sync_runner:x:996:994::/opt/alist_sync:/sbin/nologin
nginx:x:995:993:Nginx web server:/var/lib/nginx:/sbin/nologin
sre_share:x:1004:1005::/home/sre_share:/sbin/nologin

```bash


#### Options

##### The `tail` command has several options to customize its behavior:

- `-n [number]`: Display the last [number] lines of the file.
- `-f`: Follow the file as it grows, useful for monitoring log files.
- `-c [number]`: Display the last [number] bytes of the file.
- `--pid=[pid]`: Terminate after the process with the given PID dies.
- `--retry`: Keep trying to open a file even if it is inaccessible.



#### Option: -n [number]

- The `-n` option allows you to specify the number of lines to display from the end of the file.

- By default, `tail` shows the last 10 lines.

#### Example: Display Last 5 Lines

```bash

[devops@lb01 ~]$ tail -n 5 /etc/passwd
devops:x:1002:1002::/home/devops:/bin/bash
deploy_bot:x:1003:1003::/home/deploy_bot:/bin/bash
sync_runner:x:996:994::/opt/alist_sync:/sbin/nologin
nginx:x:995:993:Nginx web server:/var/lib/nginx:/sbin/nologin
sre_share:x:1004:1005::/home/sre_share:/sbin/nologin

```bash

#### Option: -f

The `-f` option is used to follow a file as it grows, which is particularly useful for monitoring log files in real-time.

#### Example: Follow Log File

```bash


[devops@lb01 ~]$ tail -f /etc/passwd
sssd:x:998:997:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/usr/sbin/nologin
chrony:x:997:996:chrony system user:/var/lib/chrony:/sbin/nologin
rsync:x:1000:1000::/home/rsync:/sbin/nologin
ftpuser:x:1001:1001::/home/ftpuser:/bin/bash
devops:x:1002:1002::/home/devops:/bin/bash
deploy_bot:x:1003:1003::/home/deploy_bot:/bin/bash
sync_runner:x:996:994::/opt/alist_sync:/sbin/nologin
nginx:x:995:993:Nginx web server:/var/lib/nginx:/sbin/nologin
sre_share:x:1004:1005::/home/sre_share:/sbin/nologin

```bash


#### Option: -c [number]

- The `-c` option allows you to display the last [number] bytes of a file instead of lines.

#### Example: Display Last 20 Bytes

```bash

[devops@lb01 ~]$ tail -c 20 /etc/passwd
share:/sbin/nologin
[devops@lb01 ~]$ tail -c 200 /etc/passwd
003::/home/deploy_bot:/bin/bash
sync_runner:x:996:994::/opt/alist_sync:/sbin/nologin
nginx:x:995:993:Nginx web server:/var/lib/nginx:/sbin/nologin
sre_share:x:1004:1005::/home/sre_share:/sbin/nologin

```bash


#### Option: --pid=[pid]

The `--pid` option terminates tailing after the process with the given PID dies. This is useful for stopping the tail operation when a related process ends.

#### Example: Terminate After Process Ends

- 可以在另一个终端用vim新开文件,ps -ef 获取vim的进程号,用他的进程号来taile --pid /etc/passwd,当vim关闭时进程号消失随即tail 不再运行

```bash

[devops@lb01 ~]$ ps -ef | grep 310599
devops    310599  310521  0 12:33 pts/1    00:00:00 vim ./aaa.txt
devops    310712  305903  0 12:37 pts/0    00:00:00 grep --color=auto 310599
[devops@lb01 ~]$
[devops@lb01 ~]$
[devops@lb01 ~]$
[devops@lb01 ~]$ tail -f --pid=310599 /etc/passwd
sssd:x:998:997:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/usr/sbin/nologin
chrony:x:997:996:chrony system user:/var/lib/chrony:/sbin/nologin
rsync:x:1000:1000::/home/rsync:/sbin/nologin
ftpuser:x:1001:1001::/home/ftpuser:/bin/bash
devops:x:1002:1002::/home/devops:/bin/bash
deploy_bot:x:1003:1003::/home/deploy_bot:/bin/bash
sync_runner:x:996:994::/opt/alist_sync:/sbin/nologin
nginx:x:995:993:Nginx web server:/var/lib/nginx:/sbin/nologin
sre_share:x:1004:1005::/home/sre_share:/sbin/nologin

```bash

#### Option: --retry

- The `--retry` option makes `tail` keep trying to open a file even if it is inaccessible. This is useful for files that may be temporarily unavailable.

#### Example: Retry Opening File

```bash

[devops@lb01 ~]$ tail --retry /etc/passwd
tail: warning: --retry ignored; --retry is useful only when following
sssd:x:998:997:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/usr/sbin/nologin
chrony:x:997:996:chrony system user:/var/lib/chrony:/sbin/nologin
rsync:x:1000:1000::/home/rsync:/sbin/nologin
ftpuser:x:1001:1001::/home/ftpuser:/bin/bash
devops:x:1002:1002::/home/devops:/bin/bash
deploy_bot:x:1003:1003::/home/deploy_bot:/bin/bash
sync_runner:x:996:994::/opt/alist_sync:/sbin/nologin
nginx:x:995:993:Nginx web server:/var/lib/nginx:/sbin/nologin
sre_share:x:1004:1005::/home/sre_share:/sbin/nologin


[devops@lb01 ~]$ tail --retry -f /aaa
tail: warning: --retry only effective for the initial open
tail: cannot open '/aaa' for reading: No such file or directory

```bash


#### Use Cases

Common scenarios where the `tail` command is beneficial include:

- Monitoring server logs to detect issues in real-time.
- Checking the latest entries in a continuously updated file.
- Debugging applications by reviewing recent log entries.


---


### Bash `head` Command - Display the beginning of a file



#### Using the `head` Command

- The `head` command is used to display the first part of files.

- It's particularly useful for previewing the start of a file to understand its structure.

- All examples below use the `/etc/ansible/ansible.cfg` file:

```bash

[devops@lb01 ~]$ head /etc/ansible/ansible.cfg
# Since Ansible 2.12 (core):
# To generate an example config file (a "disabled" one with all default settings, commented out):
#               $ ansible-config init --disabled > ansible.cfg
#
# Also you can now have a more complete file by including existing plugins:
# ansible-config init --disabled -t all > ansible.cfg

# For previous versions of Ansible you can check for examples in the 'stable' branches of each version
# Note that this file was always incomplete  and lagging changes to configuration settings


```bash

#### Basic Usage

- The `head` command displays the first 10 lines of a file by default:

#### Example: Display First 10 Lines

```bash

passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/

```bash


#### Options

##### The `head` command has several options used to customize its behavior:

- `-n [number]`: Display the first [number] lines of the file.
- `-c [number]`: Display the first [number] bytes of the file.



#### Option: -n [number]

- The `-n` option allows you to specify the number of lines to display from the start of the file. By default, `head` shows the first 10 lines.

#### Example: Display First 5 Lines

```bash

[devops@lb01 ~]$ head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

```bash



#### Option: -c [number]

- The `-c` option allows you to display the first [number] bytes of a file instead of lines.

#### Example: Display First 20 Bytes

```bash

[devops@lb01 ~]$ head -c 20 /etc/passwd
root:x:0:0:root:/roo

```bash



#### Option: Multiple Files

- The `head` command can be used to display the beginning of multiple files. By default, it prints the file name as a header before the content of each file.

#### Example: Display First 3 Lines of Multiple Files

```bash

[devops@lb01 ~]$ head -n 4 ./4_25.txt ./4_25_1.txt
==> ./4_25.txt <==
apple
banana
orange
juice

==> ./4_25_1.txt <==
01
002
0033
444

```bash



#### Option: -q

- The `-q` option suppresses the printing of headers when multiple files are being processed. This is useful when you want to view the contents of multiple files without the file names being printed.

#### Example: Suppress Headers

```bash

# 两个文件内容是直接连起来的
[devops@lb01 ~]$ head -q -n 3 ./4_25.txt ./4_25_1.txt
apple
banana
orange
01    # notice start!!
002
0033
[devops@lb01 ~]$

```bash


#### Common Uses

##### The `head` command is commonly used to:

- Preview the start of a file to understand its structure.
- Quickly check the contents of a file without opening it fully.
- Extract the header information from a data file.


---



### System Monitoring


#### Bash `ps` Command - Snapshot of Current Processes


#### Using the `ps` Command

- The `ps` command is used to report a snapshot of current processes.

- It's a useful tool for monitoring and managing processes on your system.

- All examples below use a hypothetical process list for demonstration:

```bashbash

[devops@lb01 ~]$ ps
    PID TTY          TIME CMD
  27583 pts/1    00:00:00 bash
  27638 pts/1    00:00:00 ps

```bash


#### Understanding the Output

The `ps` command output consists of several columns, each representing different aspects of the system's processes:

- **PID**: Process ID, a unique identifier for each process.
- **TTY**: Terminal type associated with the process.
- **TIME**: Total CPU time used by the process.
- **CMD**: The command that started the process.


#### Basic Usage

- To display a snapshot of current processes, use `ps`:

#### Example: Basic Usage

```bashbash

ps
PID TTY          TIME CMD
1234 pts/0    00:00:01 bash
5678 pts/1    00:00:02 python
9101 pts/2    00:00:03 node

```bash


#### Options

The `ps` command has options to change how it works:

- `-e` - Show all processes
- `-f` - Show detailed information
- `-u` - Show processes for a specific user
- `-a` - Show all processes with a terminal
- `-x` - Show processes without a terminal


#### Show All Processes

- The `-e` option allows you to show all processes.

### Example: Show All Processes

```bashbash

[devops@lb01 ~]$ ps -e
    PID TTY          TIME CMD
      1 ?        00:00:49 systemd
      2 ?        00:00:00 kthreadd
      3 ?        00:00:00 pool_workqueue_
      4 ?        00:00:00 kworker/R-rcu_g
      5 ?        00:00:00 kworker/R-sync_
      6 ?        00:00:00 kworker/R-slub_
      7 ?        00:00:00 kworker/R-netns
      9 ?        00:00:00 kworker/0:0H-events_highpri
     10 ?        00:00:00 kworker/u512:0-events_unbound
     11 ?        00:00:00 kworker/R-mm_pe
     12 ?        00:00:00 kworker/u512:1-netns
     13 ?        00:00:00 rcu_tasks_kthre
     14 ?        00:00:00 rcu_tasks_rude_
     15 ?        00:00:00 rcu_tasks_trace
     16 ?        00:00:05 ksoftirqd/0
     17 ?        00:00:02 rcu_preempt
     18 ?        00:00:00 rcu_exp_par_gp_
     19 ?        00:00:00 rcu_exp_gp_kthr
     20 ?        00:00:00 migration/0
     21 ?        00:00:00 idle_inject/0
     23 ?        00:00:00 cpuhp/0
     24 ?        00:00:00 cpuhp/1
     25 ?        00:00:00 idle_inject/1
     26 ?        00:00:00 migration/1
     27 ?        00:00:00 ksoftirqd/1
     29 ?        00:00:00 kworker/1:0H-events_highpri
     34 ?        00:00:00 kdevtmpfs
     35 ?        00:00:00 kworker/R-inet_
     36 ?        00:00:00 kauditd
     37 ?        00:00:00 khungtaskd
     39 ?        00:00:00 oom_reaper
     40 ?        00:00:00 kworker/R-write
     41 ?        00:00:01 kcompactd0
     42 ?        00:00:00 ksmd
     43 ?        00:00:01 khugepaged
     44 ?        00:00:00 kworker/R-crypt
     45 ?        00:00:00 kworker/R-kinte
     46 ?        00:00:00 kworker/R-kbloc

```bash


#### Show Detailed Information

- The `-f` option allows you to show detailed information.

#### Example: Show Detailed Information

```bashbash

[devops@lb01 ~]$ ps -f
UID          PID    PPID  C STIME TTY          TIME CMD
devops     33399   33397  0 15:57 pts/0    00:00:00 -bash
devops     33618   33399  0 16:03 pts/0    00:00:00 ps -f

```bash


#### Show Processes for a Specific User

- The `-u` option allows you to show processes for a specific user.

#### Example: Show Processes for a Specific User

```bashbash

[devops@lb01 ~]$ ps -u devops
    PID TTY          TIME CMD
  25607 ?        00:00:00 systemd
  25610 ?        00:00:00 (sd-pam)
  27580 ?        00:00:00 sshd
  27583 pts/1    00:00:00 bash
  33397 ?        00:00:00 sshd
  33399 pts/0    00:00:00 bash
  33430 ?        00:00:00 sshd
  33431 ?        00:00:00 sftp-server
  33653 pts/0    00:00:00 ps

```bash


#### Show Processes with a Terminal

- The `-a` option allows you to show all processes with a terminal.

#### Example: Show Processes with a Terminal

```bashbash

[devops@lb01 ~]$ ps -a
    PID TTY          TIME CMD
  33926 pts/0    00:00:00 ps

```bash



#### Show Processes without a Terminal

- The `-x` option allows you to show processes without a terminal.

#### Example: Show Processes without a Terminal

```bashbash

[devops@lb01 ~]$ ps -x
    PID TTY      STAT   TIME COMMAND
  25607 ?        Ss     0:00 /usr/lib/systemd/systemd --user
  25610 ?        S      0:00 (sd-pam)
  27580 ?        S      0:00 sshd: devops@pts/1
  27583 pts/1    Ss+    0:00 -bash
  33397 ?        R      0:00 sshd: devops@pts/0
  33399 pts/0    Ss     0:00 -bash
  33430 ?        S      0:00 sshd: devops@notty
  33431 ?        Ss     0:00 /usr/libexec/openssh/sftp-server
  33935 pts/0    R+     0:00 ps -x

```bash



#### Combining Options

- Options can be combined to provide more detailed output. 
- For example, `ps -ef` shows all processes with detailed information.

#### Example: Combine Options

```bashbash

[devops@lb01 ~]$ ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 May02 ?        00:00:50 /usr/lib/systemd/systemd --s
root           2       0  0 May02 ?        00:00:00 [kthreadd]
root           3       2  0 May02 ?        00:00:00 [pool_workqueue_]
root           4       2  0 May02 ?        00:00:00 [kworker/R-rcu_g]
root           5       2  0 May02 ?        00:00:00 [kworker/R-sync_]
root           6       2  0 May02 ?        00:00:00 [kworker/R-slub_]
root           7       2  0 May02 ?        00:00:00 [kworker/R-netns]
root           9       2  0 May02 ?        00:00:00 [kworker/0:0H-events_highpri
root          10       2  0 May02 ?        00:00:00 [kworker/u512:0-events_unbou
root          11       2  0 May02 ?        00:00:00 [kworker/R-mm_pe]
root          12       2  0 May02 ?        00:00:00 [kworker/u512:1-netns]
root          13       2  0 May02 ?        00:00:00 [rcu_tasks_kthre]
root          14       2  0 May02 ?        00:00:00 [rcu_tasks_rude_]
root          15       2  0 May02 ?        00:00:00 [rcu_tasks_trace]
root          16       2  0 May02 ?        00:00:05 [ksoftirqd/0]
root          17       2  0 May02 ?        00:00:02 [rcu_preempt]
root          18       2  0 May02 ?        00:00:00 [rcu_exp_par_gp_]

```bash



---


### Bash `top` Command - Display Linux Tasks


#### Using the `top` Command

- The `top` command is used to display Linux tasks.

- It's a powerful tool for monitoring system performance in real-time.

- Examples:

```bashbash

top - 16:25:37 up 20:42,  2 users,  load average: 0.03, 0.03, 0.05
Tasks: 166 total,   1 running, 165 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.0 id,  0.2 wa,  0.3 hi,  0.2 si,  0.0 st
MiB Mem :   1969.6 total,   1080.4 free,    499.7 used,    579.8 buff/cache
MiB Swap:    512.0 total,    512.0 free,      0.0 used.   1470.0 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  33504 root      20   0       0      0      0 I   0.7   0.0   0:01.15 kworker+
  34082 devops    20   0  225844   4204   3416 R   0.3   0.2   0:00.09 top
      1 root      20   0  105892  13836  10244 S   0.0   0.7   0:50.39 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.05 kthreadd
      3 root      20   0       0      0      0 S   0.0   0.0   0:00.00 pool_wo+
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
     10 root      20   0       0      0      0 I   0.0   0.0   0:00.00 kworker+
     11 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
     12 root      20   0       0      0      0 I   0.0   0.0   0:00.03 kworker+
     13 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tas+
     14 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tas+
     
```bash


#### Understanding the Output

The `top` command output consists of several columns, each representing different aspects of the system's processes:

- **PID**: Process ID, a unique identifier for each process.
- **USER**: The user account that owns the process.
- **PR**: Priority of the process.
- **NI**: Nice value, which affects scheduling priority.
- **VIRT**: Virtual memory size used by the process.
- **RES**: Resident memory size, the non-swapped physical memory the process uses.
- **SHR**: Shared memory size.
- **S**: Process status (e.g., S for sleeping, R for running).
- **%CPU**: CPU usage percentage.
- **%MEM**: Memory usage percentage.
- **TIME+**: Total CPU time the process has used since it started.
- **COMMAND**: The command that started the process.


#### Basic Usage

- To display Linux tasks, use `top`:

#### Example: Basic Usage

```bashbash

top - 16:32:27 up 20:49,  2 users,  load average: 0.80, 0.32, 0.15
Tasks: 166 total,   1 running, 165 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.3 hi,  0.2 si,  0.0 st
MiB Mem :   1969.6 total,   1074.8 free,    505.2 used,    579.9 buff/cache
MiB Swap:    512.0 total,    512.0 free,      0.0 used.   1464.4 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  34095 root      20   0       0      0      0 I   0.7   0.0   0:00.53 kworker+
    864 root      20   0 1795648  50320  32456 S   0.3   2.5   1:27.98 contain+
      1 root      20   0  105892  13836  10244 S   0.0   0.7   0:50.68 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.05 kthreadd
      3 root      20   0       0      0      0 S   0.0   0.0   0:00.00 pool_wo+
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
     10 root      20   0       0      0      0 I   0.0   0.0   0:00.00 kworker+
     11 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
     12 root      20   0       0      0      0 I   0.0   0.0   0:00.03 kworker+
     13 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tas

```bash

#### Options

The `top` command has options to change how it works:

- `-d` - Set the time between updates
- `-p` - Monitor specific PIDs
- `-u` - Show tasks for a specific user
- `-n` - Set the number of iterations
- `-b` - Batch mode operation



#### Set Update Interval

- The `-d` option allows you to set the time between updates.

#### Example: Set Update Interval

```bashbash

[devops@lb01 ~]$ top -d 10
top - 16:34:24 up 20:51,  2 users,  load average: 0.97, 0.54, 0.25
Tasks: 167 total,   1 running, 166 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.3 sy,  0.0 ni, 99.1 id,  0.1 wa,  0.3 hi,  0.2 si,  0.0 st
MiB Mem :   1969.6 total,   1066.8 free,    513.2 used,    579.8 buff/cache
MiB Swap:    512.0 total,    512.0 free,      0.0 used.   1456.4 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  33504 root      20   0       0      0      0 D   0.5   0.0   0:02.17 kworker+
      1 root      20   0  105892  13836  10244 S   0.1   0.7   0:50.79 systemd
    864 root      20   0 1795648  50324  32456 S   0.1   2.5   1:28.12 contain+
  34095 root      20   0       0      0      0 I   0.1   0.0   0:00.77 kworker+
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.05 kthreadd
      3 root      20   0       0      0      0 S   0.0   0.0   0:00.00 pool_wo+

```bash


#### Monitor Specific PIDs

- The `-p` option allows you to monitor specific PIDs.

#### Example: Monitor Specific PIDs

```bashbash

[devops@lb01 ~]$ ps -ef | grep tail
devops     34435   34345  0 16:35 pts/2    00:00:00 tail -f /etc/passwd
devops     34439   33399  0 16:35 pts/0    00:00:00 grep --color=auto tail


[devops@lb01 ~]$ top -p 34435
top - 16:36:26 up 20:53,  3 users,  load average: 0.98, 0.69, 0.35
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.3 hi,  0.2 si,  0.0 st
MiB Mem :   1969.6 total,   1075.4 free,    504.5 used,    579.9 buff/cache
MiB Swap:    512.0 total,    512.0 free,      0.0 used.   1465.1 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  34435 devops    20   0  220996   1984   1872 S   0.0   0.1   0:00.00 tail

```bash


#### Show Tasks for a Specific User

- The `-u` option allows you to show tasks for a specific user.

#### Example: Show Tasks for a Specific User

```bashbash

[devops@lb01 ~]$ top -u devops
top - 16:37:59 up 20:54,  3 users,  load average: 0.85, 0.74, 0.40
Tasks: 172 total,   1 running, 171 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  3.0 sy,  0.0 ni, 97.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1969.6 total,   1063.4 free,    516.5 used,    579.9 buff/cache
MiB Swap:    512.0 total,    512.0 free,      0.0 used.   1453.1 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  25607 devops    20   0   22384  11932   9984 S   0.0   0.6   0:00.17 systemd
  25610 devops    20   0  107152   5680   1960 S   0.0   0.3   0:00.00 (sd-pam)
  27580 devops    20   0   21244   7696   5420 S   0.0   0.4   0:00.03 sshd
  27583 devops    20   0  223852   5200   3624 S   0.0   0.3   0:00.00 bash
  33397 devops    20   0   21248   7780   5388 S   0.0   0.4   0:00.53 sshd
  33399 devops    20   0  223852   5344   3668 S   0.0   0.3   0:00.15 bash
  33430 devops    20   0   21092   7528   5344 S   0.0   0.4   0:00.00 sshd
  33431 devops    20   0   10064   6432   5404 S   0.0   0.3   0:00.00 sftp-se+
  34343 devops    20   0   21248   7668   5356 S   0.0   0.4   0:00.03 sshd
  34345 devops    20   0  223852   5348   3676 S   0.0   0.3   0:00.02 bash
  34376 devops    20   0   21092   7532   5344 S   0.0   0.4   0:00.01 sshd
  34377 devops    20   0   10064   6380   5352 S   0.0   0.3   0:00.01 sftp-se+
  34503 devops    20   0  225844   4244   3456 R   0.0   0.2   0:00.01 top

```bash


#### Set Number of Iterations

- The `-n` option allows you to set the number of iterations before `top` exits.

#### Example: Set Number of Iterations

```bashbash

[devops@lb01 ~]$ top -n 5
top - 16:40:01 up 20:56,  3 users,  load average: 0.20, 0.51, 0.35
Tasks: 177 total,   2 running, 175 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.5 us,  1.2 sy,  0.0 ni, 97.8 id,  0.0 wa,  0.3 hi,  0.2 si,  0.0 st
MiB Mem :   1969.6 total,   1058.3 free,    521.7 used,    579.9 buff/cache
MiB Swap:    512.0 total,    512.0 free,      0.0 used.   1447.9 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0  105892  13836  10244 D   0.3   0.7   0:51.03 systemd
    752 root      20   0   20912   9932   8304 S   0.3   0.5   0:04.84 systemd+
    864 root      20   0 1795648  50324  32456 S   0.3   2.5   1:28.50 contain+
  34332 root      20   0       0      0      0 I   0.3   0.0   0:01.01 kworker+
  34549 root      20   0    3996   2492   2316 R   0.3   0.1   0:00.01 unix_ch+
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.05 kthreadd
      3 root      20   0       0      0      0 S   0.0   0.0   0:00.00 pool_wo+
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
     10 root      20   0       0      0      0 I   0.0   0.0   0:00.00 kworker+
     11 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
     12 root      20   0       0      0      0 I   0.0   0.0   0:00.03 kworker+
[devops@lb01 ~]$

```bash


#### Batch Mode Operation

- The `-b` option allows `top` to run in batch mode, suitable for sending output to other programs or files.

#### Example: Batch Mode Operation

```bashbash

[devops@lb01 ~]$ top -b -n 1
top - 16:46:45 up 21:03,  3 users,  load average: 0.03, 0.16, 0.23
Tasks: 170 total,   2 running, 168 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.9 us,  2.9 sy,  0.0 ni, 94.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1969.6 total,   1061.6 free,    518.2 used,    580.0 buff/cache
MiB Swap:    512.0 total,    512.0 free,      0.0 used.   1451.4 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0  105892  13836  10244 S   0.0   0.7   0:51.29 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.05 kthreadd
      3 root      20   0       0      0      0 S   0.0   0.0   0:00.00 pool_wo+
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+

```bash


#### Combining Options

- Options can be combined to provide more detailed output. For example, `top -b -n 1` runs `top` in batch mode for one iteration.

#### Example: Combine Options

```bashbash

[devops@lb01 ~]$ top -bn 1 | tee aaa.txt
top - 16:54:20 up 21:11,  3 users,  load average: 0.04, 0.06, 0.15
Tasks: 174 total,   1 running, 173 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1969.6 total,   1068.6 free,    511.1 used,    580.1 buff/cache
MiB Swap:    512.0 total,    512.0 free,      0.0 used.   1458.5 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0  105892  13836  10244 S   0.0   0.7   0:51.60 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.05 kthreadd
      3 root      20   0       0      0      0 S   0.0   0.0   0:00.00 pool_wo+
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+
     10 root      20   0       0      0      0 I   0.0   0.0   0:00.00 kworker+
     11 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker+

```bash



---



### Bash `df` Command - File System Disk Space Usage


#### Using the `df` Command

- The `df` command is used to report file system disk space usage.

- It's a useful tool for checking available storage on your system.

- All examples below use a hypothetical output for demonstration:

```bashbash

[devops@lb01 ~]$ df
Filesystem           1K-blocks    Used Available Use% Mounted on
devtmpfs                  4096       0      4096   0% /dev
tmpfs                  1008444       0   1008444   0% /dev/shm
tmpfs                   403380   36708    366672  10% /run
/dev/mapper/rlm-root  19329024 4935180  14393844  26% /
/dev/nvme0n1p2          996780  327360    600608  36% /boot
tmpfs                   201688       0    201688   0% /run/user/1002

```bash


#### Understanding the Output

The `df` command output consists of several columns, each representing different aspects of the file system's disk usage:

- **Filesystem**: The name of the file system.
- **1K-blocks**: Total size of the file system in 1K blocks.
- **Used**: Amount of space used.
- **Available**: Amount of space available for use.
- **Use%**: Percentage of space used.
- **Mounted on**: Directory where the file system is mounted.


#### Basic Usage

- To display disk space usage, use `df`:

#### Example: Basic Usage

```bashbash

[devops@lb01 ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
devtmpfs              4.0M     0  4.0M   0% /dev
tmpfs                 985M     0  985M   0% /dev/shm
tmpfs                 394M   36M  359M  10% /run
/dev/mapper/rlm-root   19G  4.8G   14G  26% /
/dev/nvme0n1p2        974M  320M  587M  36% /boot
tmpfs                 197M     0  197M   0% /run/user/1002

```bash


#### Options

The `df` command has options to change how it works:

- `-h` - Show sizes in human-readable format (e.g., KB, MB)
- `-a` - Show all file systems, even empty ones
- `-T` - Show the type of file system
- `-i` - Show inode usage
- `-P` - Use POSIX output format


#### Show Sizes in Human-Readable Format

- The `-h` option allows you to show sizes in human-readable format.

#### Example: Show Sizes in Human-Readable Format

```bashbash

[devops@lb01 ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
devtmpfs              4.0M     0  4.0M   0% /dev
tmpfs                 985M     0  985M   0% /dev/shm
tmpfs                 394M   36M  359M  10% /run
/dev/mapper/rlm-root   19G  4.8G   14G  26% /
/dev/nvme0n1p2        974M  320M  587M  36% /boot
tmpfs                 197M     0  197M   0% /run/user/1002

```bash


#### Show All File Systems

- The `-a` option allows you to show all file systems, even empty ones.

#### Example: Show All File Systems

```bashbash

[devops@lb01 ~]$ df -a
Filesystem           1K-blocks    Used Available Use% Mounted on
proc                         0       0         0    - /proc
sysfs                        0       0         0    - /sys
devtmpfs                  4096       0      4096   0% /dev
securityfs                   0       0         0    - /sys/kernel/security
tmpfs                  1008444       0   1008444   0% /dev/shm
devpts                       0       0         0    - /dev/pts
tmpfs                   403380   36704    366676  10% /run
cgroup2                      0       0         0    - /sys/fs/cgroup
pstore                       0       0         0    - /sys/fs/pstore
bpf                          0       0         0    - /sys/fs/bpf
configfs                     0       0         0    - /sys/kernel/config
/dev/mapper/rlm-root  19329024 4935312  14393712  26% /
systemd-1                    0       0         0    - /proc/sys/fs/binfmt_misc
mqueue                       0       0         0    - /dev/mqueue
hugetlbfs                    0       0         0    - /dev/hugepages
debugfs                      0       0         0    - /sys/kernel/debug
tracefs                      0       0         0    - /sys/kernel/tracing
fusectl                      0       0         0    - /sys/fs/fuse/connections
none                         0       0         0    - /run/credentials/systemd-sysctl.service
none                         0       0         0    - /run/credentials/systemd-tmpfiles-setup-dev.service
/dev/nvme0n1p2          996780  327360    600608  36% /boot
none                         0       0         0    - /run/credentials/systemd-tmpfiles-setup.service
tmpfs                   201688       0    201688   0% /run/user/1002

```bash


#### Show File System Type

- The `-T` option allows you to show the type of file system.

#### Example: Show File System Type

```bashbash

[devops@lb01 ~]$ df -Th
Filesystem           Type      Size  Used Avail Use% Mounted on
devtmpfs             devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs                tmpfs     985M     0  985M   0% /dev/shm
tmpfs                tmpfs     394M   36M  359M  10% /run
/dev/mapper/rlm-root xfs        19G  4.8G   14G  26% /
/dev/nvme0n1p2       ext4      974M  320M  587M  36% /boot
tmpfs                tmpfs     197M     0  197M   0% /run/user/1002

```bash

- **File System Type:** This indicates the format and structure used to store and organize data on a disk.

- Common file system types include `ext4``ntfs`, and `vfat`.

- Each type has its own features, limitations, and compatibility with operating systems.


#### Show Inode Usage

- The `-i` option allows you to show inode usage.

#### Example: Show Inode Usage

```bashbash

[devops@lb01 ~]$ df -i
Filesystem            Inodes IUsed   IFree IUse% Mounted on
devtmpfs              246240   419  245821    1% /dev
tmpfs                 252111     1  252110    1% /dev/shm
tmpfs                 819200   734  818466    1% /run
/dev/mapper/rlm-root 9697280 93667 9603613    1% /
/dev/nvme0n1p2         65536   376   65160    1% /boot
tmpfs                  50422    14   50408    1% /run/user/1002

```bash

#### **Inodes:** Inodes are data structures used by many file systems to store information about files and directories, such as their size, owner, permissions, and timestamps.

- Each file or directory has a unique inode. The `df -i` command shows inode usage, which can be important for systems with many small files.


#### Use POSIX Output Format

- The `-P` option allows you to use the POSIX output format.

#### Example: Use POSIX Output Format

```bashbash

[devops@lb01 ~]$ df -P
Filesystem           1024-blocks    Used Available Capacity Mounted on
devtmpfs                    4096       0      4096       0% /dev
tmpfs                    1008444       0   1008444       0% /dev/shm
tmpfs                     403380   36712    366668      10% /run
/dev/mapper/rlm-root    19329024 4935456  14393568      26% /
/dev/nvme0n1p2            996780  327360    600608      36% /boot
tmpfs                     201688       0    201688       0% /run/user/1002
tmpfs                     201688       0    201688       0% /run/user/0

```bash

- **POSIX:** POSIX (Portable Operating System Interface) is a set of standards specified by the IEEE for maintaining compatibility between operating systems.

- The `df -P` option provides output in a POSIX-compliant format, ensuring consistency across different environments and systems.


#### Combining Options

- Options can be combined to provide more detailed output.

- For example, `df -hT` shows sizes in human-readable format along with the file system type.

#### Example: Combine Options

```bashbash

[devops@lb01 ~]$ df -Th
Filesystem           Type      Size  Used Avail Use% Mounted on
devtmpfs             devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs                tmpfs     985M     0  985M   0% /dev/shm
tmpfs                tmpfs     394M   36M  359M  10% /run
/dev/mapper/rlm-root xfs        19G  4.8G   14G  26% /
/dev/nvme0n1p2       ext4      974M  320M  587M  36% /boot
tmpfs                tmpfs     197M     0  197M   0% /run/user/1002
[devops@lb01 ~]$

```bash



---


### Bash `du` Command - File Space Usage


#### Using the `du` Command

- The `du` command is used to estimate file space usage.

- It's helpful for finding out how much space files and directories take up.

- examples:

```bashbash

80K     ./Scripts/python/venv/lib/python3.9/site-packages/google_genai-1.47.0.dist-info
53M     ./Scripts/python/venv/lib/python3.9/site-packages
53M     ./Scripts/python/venv/lib/python3.9
53M     ./Scripts/python/venv/lib
52K     ./Scripts/python/venv/bin
53M     ./Scripts/python/venv
53M     ./Scripts/python
53M     ./Scripts
355M    .

```bash


#### Understanding the Output

The `du` command output consists of two columns:

- **Size**: The amount of disk space used by the file or directory.
- **Path**: The file or directory path.


#### Basic Usage

- To display file space usage, use `du`:

#### Example: Basic Usage

```bashbash
du
8.0K    ./dir1
12K     ./dir2
20K     .
```bash


#### Options

The `du` command has options to change how it works:

- `-h` - Show sizes in human-readable format (e.g., KB, MB)
- `-s` - Show only the total size for each item
- `-a` - Show sizes for all files, not just directories
- `-c` - Produce a grand total
- `--max-depth=N` - Limit the depth of directory traversal


#### Show Sizes in Human-Readable Format

- The `-h` option allows you to show sizes in human-readable format.

#### Example: Show Sizes in Human-Readable Format

```bashbash


du -h

80K     ./Scripts/python/venv/lib/python3.9/site-packages/google_genai-1.47.0.dist-info
53M     ./Scripts/python/venv/lib/python3.9/site-packages
53M     ./Scripts/python/venv/lib/python3.9
53M     ./Scripts/python/venv/lib
52K     ./Scripts/python/venv/bin
53M     ./Scripts/python/venv
53M     ./Scripts/python
53M     ./Scripts
355M    .

```bash


#### Show Only Total Size

- The `-s` option allows you to show only the total size for each item.

#### Example: Show Only Total Size

```bashbash

[devops@lb01 ~]$ du -sh
355M    .

```bash


#### Show Sizes for All Files

- The `-a` option allows you to show sizes for all files, not just directories.

#### Example: Show Sizes for All Files

```bashbash


du -a

4.0K    ./Scripts/python/venv/bin/activate.csh
4.0K    ./Scripts/python/venv/bin/activate.fish
4.0K    ./Scripts/python/venv/bin/normalizer
4.0K    ./Scripts/python/venv/bin/websockets
4.0K    ./Scripts/python/venv/bin/httpx
52K     ./Scripts/python/venv/bin
4.0K    ./Scripts/python/venv/pyvenv.cfg
53M     ./Scripts/python/venv
53M     ./Scripts/python
53M     ./Scripts
16K     ./aaa.txt
355M    .

```bash


#### Produce a Grand Total

- The `-c` option allows you to produce a grand total.

#### Example: Produce a Grand Total

```bashbash

80K     ./Scripts/python/venv/lib/python3.9/site-packages/google_genai-1.47.0.dist-info
53M     ./Scripts/python/venv/lib/python3.9/site-packages
53M     ./Scripts/python/venv/lib/python3.9
53M     ./Scripts/python/venv/lib
52K     ./Scripts/python/venv/bin
53M     ./Scripts/python/venv
53M     ./Scripts/python
53M     ./Scripts
355M    .
355M    total

```bash


#### Limit Directory Traversal Depth

- The `--max-depth=N` option allows you to limit the depth of directory traversal.

- This can be useful for summarizing disk usage at a specific directory level.

#### Example: Limit Directory Traversal Depth

```bashbash

[devops@lb01 ~]$ du --max-depth=1
4       ./.config
8       ./.ssh
8       ./.terraform.d
3476    ./Docker
68      ./.docker
0       ./.ansible
4       ./.vim
11812   ./.cache
293084  ./Terraform
54256   ./Scripts
362796  .

```bash

- In this example, `du --max-depth=1` shows the space used by each directory at the top level, without diving deeper into subdirectories.

#### Example: Limit Directory Traversal Depth to 2

```bashbash

[devops@lb01 ~]$ du --max-depth=2
0       ./.config/procps
4       ./.config/htop
4       ./.config
8       ./.ssh
8       ./.terraform.d
0       ./Docker/redis
3476    ./Docker/docker-nodejs-sample
0       ./Docker/nginx
3476    ./Docker
68      ./.docker/buildx
68      ./.docker
0       ./.ansible/tmp
0       ./.ansible/cp
0       ./.ansible
4       ./.vim
11812   ./.cache/pip
11812   ./.cache
293080  ./Terraform/aliyun
4       ./Terraform/tailscale
293084  ./Terraform
20      ./Scripts/shell
54236   ./Scripts/python
54256   ./Scripts
362796  .


[devops@lb01 ~]$ tree -L 2
.
├── aaa.txt
├── Docker
│   ├── docker-nodejs-sample
│   ├── nginx
│   └── redis
├── Scripts
│   ├── python
│   └── shell
└── Terraform
    ├── aliyun
    └── tailscale

10 directories, 1 file

```bash

- Here, `du --max-depth=2` provides a summary of disk usage up to two levels deep, including subdirectories.


#### Combining Options

- Options can be combined to provide more detailed output. For example, `du -h --max-depth=1` shows sizes in human-readable format with limited directory depth.

#### Example: Combine Options

```bashbash

[devops@lb01 ~]$ du -h --max-depth=2
0       ./.config/procps
4.0K    ./.config/htop
4.0K    ./.config
8.0K    ./.ssh
8.0K    ./.terraform.d
0       ./Docker/redis
3.4M    ./Docker/docker-nodejs-sample
0       ./Docker/nginx
3.4M    ./Docker
68K     ./.docker/buildx
68K     ./.docker
0       ./.ansible/tmp
0       ./.ansible/cp
0       ./.ansible
4.0K    ./.vim
12M     ./.cache/pip
12M     ./.cache
287M    ./Terraform/aliyun
4.0K    ./Terraform/tailscale
287M    ./Terraform
20K     ./Scripts/shell
53M     ./Scripts/python
53M     ./Scripts
355M    .

```bash




---




### Bash `free` Command - Display Free and Used Memory


#### Using the `free` Command

- The `free` command is used to display the amount of free and used memory in the system.

- It's useful for monitoring memory usage and managing system resources.


#### Basic Usage

- To display memory usage, use `free`:

#### Example

```bashbash
free -k
              total        used        free      shared  buff/cache   available
Mem:        8176588     1376568     5869188      146532     1051172     6352280
Swap:       2097148           0     2097148
```bash



#### Options

The `free` command has options to change how it works:

- `-h` - Show memory in human-readable format (e.g., KB, MB, GB)
- `-b` - Show memory in bytes
- `-k` - Show memory in kilobytes (KB)
- `-m` - Show memory in megabytes (MB)
- `-g` - Show memory in gigabytes (GB)
- `-s [interval]` - Continuously display memory usage at specified intervals
- `-t` - Display total memory


#### Show Memory in Human-Readable Format

- The `-h` option allows you to show memory in a human-readable format, such as KB, MB, or GB.

- Without this option, memory is displayed in kilobytes by default.

#### Example: Show Memory in Human-Readable Format

```bashbash

[devops@lb01 ~]$ free -h
               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       505Mi       1.0Gi        35Mi       585Mi       1.4Gi
Swap:          511Mi          0B       511Mi

```bash


#### Show Memory in Bytes

- The `-b` option allows you to show memory in bytes, providing a more precise measurement.

- Without this option, memory is displayed in kilobytes by default.

#### Example: Show Memory in Bytes

```bashbash

[devops@lb01 ~]$ free -b
               total        used        free      shared  buff/cache   available
Mem:      2065297408   534020096  1119330304    37597184   613793792  1531277312
Swap:      536866816           0   536866816

```bash


#### Show Memory in Kilobytes

- The `-k` option allows you to show memory in kilobytes.

- This is the default behavior of the `free` command.

#### Example: Show Memory in Kilobytes

```bashbash

[devops@lb01 ~]$ free -k
               total        used        free      shared  buff/cache   available
Mem:         2016892      517516     1097080       36716      599404     1499376
Swap:         524284           0      524284

```bash


#### Show Memory in Megabytes

- The `-m` option allows you to show memory in megabytes, which can be easier to read for larger memory sizes.

- Without this option, memory is displayed in kilobytes by default.

#### Example: Show Memory in Megabytes

```bashbash

[devops@lb01 ~]$ free -m
               total        used        free      shared  buff/cache   available
Mem:            1969         500        1076          35         585        1469
Swap:            511           0         511

```bash


#### Show Memory in Gigabytes

- The `-g` option allows you to show memory in gigabytes, which is useful for systems with large amounts of memory.

- Without this option, memory is displayed in kilobytes by default.

#### Example: Show Memory in Gigabytes

```bashbash

[devops@lb01 ~]$ free -g
               total        used        free      shared  buff/cache   available
Mem:               1           0           1           0           0           1
Swap:              0           0           0

```bash


#### Continuously Display Memory Usage

- The `-s` option allows you to continuously display memory usage at specified intervals. This is useful for monitoring memory usage over time.

#### Example: Continuously Display Memory Usage

```bashbash

free -s 5
               total        used        free      shared  buff/cache   available
Mem:         2016892      521552     1092952       36716      599500     1495340
Swap:         524284           0      524284

               total        used        free      shared  buff/cache   available
Mem:         2016892      521552     1092952       36716      599500     1495340
Swap:         524284           0      524284

               total        used        free      shared  buff/cache   available
Mem:         2016892      506416     1108084       36704      599492     1510476
Swap:         524284           0      524284

               total        used        free      shared  buff/cache   available
Mem:         2016892      510512     1103988       36708      599496     1506380
Swap:         524284           0      524284


```bash

- This command will update the memory usage every 5 seconds.



#### Display Total Memory

- The `-t` option includes a line showing the total memory (used + free) for both RAM and swap. This provides a quick overview of total memory resources.

#### Example: Display Total Memory

```bashbash

               total        used        free      shared  buff/cache   available
Mem:         2016892      521684     1092752       36708      599556     1495208
Swap:         524284           0      524284
Total:       2541176      521684     1617036

```bash



---


### Bash `kill` Command - Terminate Processes


#### Using the `kill` Command

- The `kill` command is used to terminate processes in a Unix-like operating system.

- It's a powerful tool for managing system resources and ensuring that processes do not consume more resources than necessary.


#### Common Uses

The `kill` command is commonly used to:

- Terminate unresponsive processes.
- Manage system resources by stopping unnecessary processes.
- Send specific signals to processes for custom handling.


#### Syntax

- The basic syntax of the `kill` command is:

```bashbash
kill [OPTION]... ...
```bash



#### Options

The `kill` command has several options to customize its behavior:

- `-9`: Forcefully terminate a process.
- `-l`: List all signal names.
- `-s [signal]`: Specify a signal to send.
- `-p`: Print the process ID.

#### Forcefully Terminate a Process

- The `-9` option sends the SIGKILL signal to a process, which forcefully terminates it. 
- This is useful when a process does not respond to other signals.

#### Example: Forcefully Kill a Process

```bashbash

[devops@lb01 ~]$ kill -9 36112


[devops@lb01 ~]$ tail -f /etc/passwd
sssd:x:998:997:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/usr/sbin/nologin
chrony:x:997:996:chrony system user:/var/lib/chrony:/sbin/nologin
rsync:x:1000:1000::/home/rsync:/sbin/nologin
ftpuser:x:1001:1001::/home/ftpuser:/bin/bash
devops:x:1002:1002::/home/devops:/bin/bash
deploy_bot:x:1003:1003::/home/deploy_bot:/bin/bash
sync_runner:x:996:994::/opt/alist_sync:/sbin/nologin
nginx:x:995:993:Nginx web server:/var/lib/nginx:/sbin/nologin
sre_share:x:1004:1005::/home/sre_share:/sbin/nologin
Killed

```bash


#### List All Signal Names

- The `-l` option lists all available signal names. 
- This can help you understand which signals are available for use with the `kill` command.

#### Example: List Signal Names

```bashbash

[devops@lb01 ~]$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 2) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
3) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
4) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
5) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
6) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
7) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
8) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
9) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
10) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
11) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
12) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
13) SIGRTMAX-1  64) SIGRTMAX

```bash


#### Specify a Signal to Send

- The `-s` option allows you to specify a signal to send to a process. 
- This provides flexibility in controlling processes.

#### Example: Send a Custom Signal

```bashbash

[devops@lb01 ~]$ kill -s SIGTERM 36167


[devops@lb01 ~]$ tail -f /etc/passwd
sssd:x:998:997:User for sssd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/usr/sbin/nologin
chrony:x:997:996:chrony system user:/var/lib/chrony:/sbin/nologin
rsync:x:1000:1000::/home/rsync:/sbin/nologin
ftpuser:x:1001:1001::/home/ftpuser:/bin/bash
devops:x:1002:1002::/home/devops:/bin/bash
deploy_bot:x:1003:1003::/home/deploy_bot:/bin/bash
sync_runner:x:996:994::/opt/alist_sync:/sbin/nologin
nginx:x:995:993:Nginx web server:/var/lib/nginx:/sbin/nologin
sre_share:x:1004:1005::/home/sre_share:/sbin/nologin
Terminated

```bash


#### Print the Process ID

- The `-p` option prints the process ID of the process you are targeting. 
- This is useful for verifying the process you intend to signal.

#### Example: Print Process ID

```bashbash
kill -p 1234
```bash



---


### Bash `uptime` Command - System Runtime


#### Using the `uptime` Command

The `uptime` command is used to find out how long the system has been running.

It provides a quick overview of the system's performance, including:

- The current time
- How long the system has been up
- The number of users logged in
- The system load averages for the past 1, 5, and 15 minutes


#### Syntax

- The basic syntax of the `uptime` command is:

```bashbash
uptime
```bash

- This command displays information like the current time, uptime duration, number of users, and load averages.


#### Understanding the Output

The output of the `uptime` command shows information like:

- **Current Time:** The time at which the command was run.
- **Uptime Duration:** How long the system has been running since the last reboot.
- **Number of Users:** The number of users currently logged into the system.
- **Load Averages:** The system load averages for the past 1, 5, and 15 minutes.



#### Example Output

- Here's an example of the `uptime` command output:

#### Example: Understanding Uptime Output

```bashbash

[devops@lb01 ~]$ uptime
 17:52:33 up 22:09,  2 users,  load average: 0.03, 0.07, 0.08

```bash

In this example:

- The current time is **17:52:33**.
- The system has been up for **22:09**.
- There are **2 users** currently logged in.
- The load averages are **0.03, 0.07, 0.08**, indicating the system load over the last 1, 5, and 15 minutes.


#### Interpreting Load Averages

The load averages provide a snapshot of the system's workload:

- A lower load average indicates a less busy system.
- A higher load average suggests the system is busier.
- Load averages above 1.0 per core may indicate the system is overloaded.

#### Example: Interpreting Load Averages

```bashbash
load average: 0.75, 0.60, 0.50
```bash

- In this example, the system load is decreasing over time, indicating that the system is becoming less busy.



#### Common Uses

The `uptime` command is commonly used to:

- Monitor system performance and stability.
- Quickly check how long the system has been running.
- Assess system load and determine if the system is under heavy use.