博客列表
Enterprise Devices
打印机 企业复合机支持热插拔(Hot-Swap)架构。 开盖: 机器报“缺粉”时,直接在开机状态下打开前盖。 拔出: 捏住对应的颜色(CMYK)碳粉盒把手,直接抽出来。 摇匀(关键动作): 拿出新的碳粉盒,左右水平摇晃 5-6 下。因为碳粉是物理颗粒,长时间静置会结块,摇匀是为了防止打印出白条。 推入: 顺着轨道推到底,关上门。 等待自检: 机器屏幕会提示“正在补充碳粉”,电机转动一两分钟后,自动恢复打印。全程对用户无感。 IP 电话与视频会议连不上(网络与协议层排障) 1. IP 电话(VoIP)排障逻辑 IP 电话本质上就是一台只有一块小屏幕的“Linux 微型电脑”。 电源层(L1): 绝大多数企业 IP 电话没有电源插头!它们使用的是 PoE(以太网供电) 交换机。如果电话黑屏不开机,第一步不是找插座,而是去机房看对应的交换机端口灯亮不亮,或者网线是不是断了。 网络层(L2/L3): 企业的交换机里通常划分了 Voice VLAN(语音专网)。如果一台电脑能上网,但拔下这根网线插到电话上却打不通,通常是因为交换机端口没有配置正确的 Voice VLAN ID,导致电话无法获取语音网段的 DHCP 地址。 应用层(L7): 如果屏幕亮了,也有 IP 地址,但是打不出电话。这就去检查 SIP 注册状态。这说明电话没有成功连接到总部的 Call Manager(呼叫中心服务器),这时候才需要你去 Ping 语音服务器的 IP 看通不通。 视频会议设备(如 Polycom 宝利通、罗技、华为 TE 等) 视频会议设备的故障,90% 集中在两个极端:最底层的物理线缆,和最顶层的防火墙策略。 物理 I/O 故障(最常见): “会议室没声音/没图像!” 过去一看,HDMI 线被上一个开会的人拔了,或者麦克风阵列的线被保洁阿姨扫地时碰掉了。 所以排障第一步:永远先顺着设备把所有物理线缆摸一遍,按紧。 防火墙 UDP 阻断: 视频会议走的是极其消耗带宽的 UDP 视频流。如果设备能连上网,但是加入会议后“黑屏”或者“听不到对方声音”,极大概率是公司的边缘防火墙(Firewall)没有放行特定的音视频端口(比如 UDP 10000-20000 段)。这时候你只需收集好设备的 IP 和目标会议室的 IP,把工单丢给网络安全组去开通策略即可。
May 7, 2026
Network Engineer
1.x: 1️⃣ 网络体系结构与通信过程:探讨 OSI 七层模型与 TCP/IP 模型的对应关系,以及数据在各层是如何自上向下封装、自下向上解封装的 。 网络协议三要素: 语法(Syntax): 规定数据与控制信息的结构或格式 。 语义(Semantics): 规定各个控制信息的具体含义 。 比如系统发出这个控制信息,是要求完成何种动作(是建立连接还是断开连接)。 同步 / 时序(Timing): 对事件实现顺序和时间的详细说明 。比如数据应该在何时发送、以多快的速率发送 。 考点二:架构师的系统分层视角(三大体系结构对比)
May 3, 2026
Regex
What is a regular expression (or regex)? Wikipedia defines regular expressions as: “a sequence of characters that define a search pattern” They are available in basically every programming language, and you’ll probably most commonly encounter them used for string matches in conditionals that are too complicated for simple logical comparisons (like “or”, “and”, “in”). A couple of examples of regular expressions to get started: [ -~] Any ASCII character (ASCII characters fall between space and “~”) ^[a-z0-9_-]{3,15}$ Usernames between 3 and 15 characters When to use regex Use regular expressions with caution. The complexity of regex carries a cost. Avoid coding in regex if you can ‘Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.’ – Jamie Zawinski
April 27, 2026
jekyll 博客迁移为 Hugo
jekyll 博客迁移为 Hugo 痛点:Hugo (对比 Jekyll) 在 DevOps 和静态网站生成(SSG)的圈子里,Jekyll 是前辈,但 Hugo 是目前的“性能之王”。以下是它在工程体验上的三大降维打击: 1. Zero Dependency Jekyll 的痛点: 它是用 Ruby 写的。你为了跑起来,必须折腾 Ruby 环境、装 bundler、解决 Gemfile 版本冲突。换台电脑经常跑不起来,让人非常崩溃。 Hugo 的优势: 它是用 Go 语言编写的。Hugo 编译出来就是一个独立的二进制文件。不需要装 Go 环境,不需要装任何依赖,下载那个 .exe 或执行 brew install hugo,立刻就能跑,极其干净。 2. 最快的静态网站生成器 Jekyll 的痛点: 当你的博客文章超过 100 篇时,Jekyll 的本地编译速度会肉眼可见地变慢,每次保存可能要等好几秒浏览器才会刷新。 Hugo 的优势: 号称“世界上最快的静态网站生成器”。哪怕你有上万篇文章,它的构建时间也是以毫秒计算的。保存瞬间,渲染完成。 3. 极简的本地预览指令 在 Hugo 中,只需要在博客根目录下敲下这一行命令: # -D 参数表示同时渲染草稿 (Drafts) hugo server -D 本地实时更新: http://localhost:1313/ Jekyll 到 Hugo 的企业级迁移 SOP: 阶段一:本地架构重组 (Directory Restructuring) Hugo 的目录规范和 Jekyll 类似,但更加严谨。我们需要把你的资产“重定向”到 Hugo 认识的路径里。请在终端执行以下操作: 1. 清理历史包袱 (Drop Legacy Dependencies) 既然不用 Jekyll 了,Ruby 的依赖和本地编译的产物必须立刻销毁,防止环境污染。
April 26, 2026
Docker
Docker Commands docker pull redis:8. redis:8.0.6-alpine docker images [devops@lb01 ~/docker/redis]$ docker images IMAGE ID DISK USAGE CONTENT SIZE EXTRA my-nodejs:v1 954fdbfce62a 194MB 48.1MB U nginx:latest 7f0adca1fc6c 237MB 65.8MB U redis:8.0.6-alpine 5f61955be8ab 86.8MB 24.9MB U docker run -p 6000:3000 –name -d redis-example redis:8.0.6-alpine [devops@lb01 ~/docker/redis]$ docker run -p 6000:3000 -d --name redis-example redis:8.0.6-alpine d7d16d237b5f664fa779edeb6af5b7696ef8b595b76104aa6a7475a27a4ac10c [devops@lb01 ~/docker/redis]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d7d16d237b5f redis:8.0.6-alpine "docker-entrypoint.s…" 8 seconds ago Up 7 seconds 6379/tcp, 0.0.0.0:6000->3000/tcp, [::]:6000->3000/tcp redis-example [devops@lb01 ~/docker/redis]$ ss -lntup Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* udp UNCONN 0 0 [::1]:323 [::]:* tcp LISTEN 0 4096 0.0.0.0:6000 0.0.0.0:* tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* tcp LISTEN 0 4096 [::]:6000 [::]:* tcp LISTEN 0 511 [::]:80 [::]:* tcp LISTEN 0 128 [::]:22 [::]:* tcp LISTEN 0 32 *:21 *:* docker exec -it d7d16d237b5f /bin/bash [devops@lb01 ~/docker/redis]$ docker exec -it d7d16d237b5f /bin/bash OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory # 报错后查询 Github issus ,了解到切换到 /bin/sh 后成功运行并进入到容器内 [devops@lb01 ~/docker/redis]$ docker exec -it d7d16d237b5f /bin/sh /data # ls /data # pwd /data [devops@lb01 ~/docker/redis]$ docker exec -it d7d16d237b5f /bin/sh /data # cd / / # ls bin dev home media opt root sbin sys usr data etc lib mnt proc run srv tmp var / # env HOSTNAME=d7d16d237b5f SHLVL=1 HOME=/root OLDPWD=/data TERM=xterm PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/ / # / # exit [devops@lb01 ~/docker/redis]$ docker exec -it d7d16d237b5f /bin/sh /data # curl /bin/sh: curl: not found Difference: docker ps / docker ps -a [devops@lb01 ~/docker/redis]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d7d16d237b5f redis:8.0.6-alpine "docker-entrypoint.s…" 31 minutes ago Up 31 minutes 6379/tcp, 0.0.0.0:6000->3000/tcp, [::]:6000->3000/tcp redis-example [devops@lb01 ~/docker/redis]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d7d16d237b5f redis:8.0.6-alpine "docker-entrypoint.s…" 31 minutes ago Up 31 minutes 6379/tcp, 0.0.0.0:6000->3000/tcp, [::]:6000->3000/tcp redis-example 37fb32f3b1f9 redis:8.0.6-alpine "docker-entrypoint.s…" 43 minutes ago Exited (0) 43 minutes ago redis-1 8ffc7554566c 7f0adca1fc6c "/docker-entrypoint.…" 31 hours ago Exited (0) 30 hours ago sre-tutorial-nginx e329c77b6133 my-nodejs:v1 "docker-entrypoint.s…" 3 days ago Exited (1) 30 hours ago web Docker Deploy the Demo Project Workflow with Docker: Push: js,Mongo DB ==> Git ==> Jenkins: Build JS APP & Create Docker Image ==> Docker Repository( Docker Hub ) Pull: From "Docker Hub" Developing with Containers need: JS and Node application, MongoDB Docker Container
April 21, 2026
IAM-Least Privilege Principle
Use least privilege principle to secure your CI/CD pipeline IAM Permissions && Access Control Prompt–The Over-Permissioned Pipeline Disaster-Real Security Risk: Developer sets up CodeBuild,gets “Access Denied” errors Frustrated,they attackAdministratorAccess policy to fix it quickly Pipeline works!Problems solved…or is it? CodeBuild now has full access to delete databases,modify IAM,access all s3 bucket Attacker compromises the build through malicious code in dependencies Now attacker has admin access to your entire AWS account The Principle of Least Privilege - Only What’s needed,Nothing More. Least Privilege = Grant minimum permissions required to do the job CodeBuild needs to read one S3 bucket?Grant exactly that,not all S3 buckets CodeDeploy nedds to update EC2 instances?Grant only deployment permission Dont’t grant Full S3 access EC2 admin IAM modification Think: What’s the smallest set of permissions for this to work? Benefits: Limits blast radius if compromised Building Secure IAM Policies for Pipeline Services IAM Policy = JSON document with permissions
April 20, 2026
Bash Scripting Documetry
Bash Scripting Bash: Bourne Again Shell Bash Syntax for Scripting Bash scripts are sequences of commands executed by the Bash shell. They automate tasks and can be used to perform complex operations. Understanding Bash syntax is crucial for writing effective scripts. Basic Syntax Here are some basic rules for using Bash in scripts: Comments: Comments start with a # and Bash ignores them. Command Order: Commands run one after the other, from top to bottom. Semicolons: Use ; to run multiple commands on the same line. Let's go through them one by one with examples. This script prints a greeting message [devops@lb01 ~]$ # This script prints a greeting message! [devops@lb01 ~]$ echo "hello!!" echo "hello# This script prints a greeting message!" hello# This script prints a greeting message! Best Practices for Writing Scripts Here are some tips for writing clean and efficient scripts: Use comments to explain your code. Choose meaningful variable names. Test your scripts thoroughly before using them in production. Introduction to Bash Scripting Bash scripts are files containing commands that you run in the terminal. They automate tasks and make your work more efficient. Creating a Bash Script To create a script, start with the shebang #! followed by the path to Bash, usually /bin/bash. Make sure your script has execute permissions. Example: Simple Bash Script #!/bin/bash # This script prints a greeting message echo "Hello, World!" Using Variables in Scripts Variables store data that your script can use. Assign values using the = sign without spaces. Example: Using Variables [devops@lb01 ~]$ name="dslfaj" [devops@lb01 ~]$ echo "hello,$name" hello,dslfaj ====================================== #!/bin/bash # Assign a value to a variable name="World" echo "Hello, $name!" Bash Variables Understanding Variables in Bash Variables in Bash are used to store data that can be used and manipulated throughout your script or command-line session. Bash variables are untyped, meaning they can hold any type of data.
April 18, 2026
Terraform Docker
今天安装Terraform的时候突然安装不上的情况,于是开始排查: [devops@lb01 ~/infrastructure/terraform]$ sudo dnf install terraform -y [sudo] password for devops: Sorry, try again. [sudo] password for devops: Last metadata expiration check: 2:47:45 ago on Tue 14 Apr 2026 01:05:35 PM CST. No match for argument: terraform 猜测原因:可能与我之前在rocky上折腾yum清理repo/缓存有关系
April 18, 2026
Linux Common Commands
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.
April 16, 2026