0%

linux 常用命令

linux 常用命令

查看进程物理内存占用

smem 工具官方地址:https://www.selenic.com/smem/

1
smem -M php | grep USS

解决 ls 目录文件太多卡住

1
$ ls -1 -f

默认 ls 命令将进行文件排序,在内存中存储目录中所有的文件,这将卡住 ls 命令。而 ls -1 -f 命令将不进行排序直接列出文件。

批量查看文件

1
$ find . -type f -print -exec cat {} \; | grep -v '.git'

进程、线程监控

查看某进程的所有线程

top -H -p

top -H -p 2464
top -H -c -p 2464

ps -T -p

ps -T -p 2464
ps -Tf -p 2464

获取 hostname 中的英文字母
1
hostname -s | grep -Eo "[[:alpha:]]*"

grep

1
2
3
4
5
# 在当前目录下递归搜索 phonenumber 关键字,但排除 ./ruoyi-ui 和 ./ruoyi-common 目录。
grep -rl "phonenumber" --exclude-dir={ruoyi-ui,ruoyi-common} ./


grep -rl --exclude="*.js" "phonenumber" ./

ls

1
2
3
4
5
6
7
8
9

$ ls -l /etc/yum.repos.d/
-rw-r--r--. 1 root root 1664 4月 29 2018 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 4月 29 2018 CentOS-CR.repo
-rw-r--r--. 1 root root 649 4月 29 2018 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 4月 29 2018 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 4月 29 2018 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 4月 29 2018 CentOS-Sources.repo
-rw-r--r--. 1 root root 4768 4月 29 2018 CentOS-Vault.repo
只显示文件名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ ls -1 /etc/yum.repos.d/
CentOS-Base.repo
CentOS-CR.repo
CentOS-Debuginfo.repo
CentOS-fasttrack.repo
CentOS-Media.repo
CentOS-Sources.repo
CentOS-Vault.repo
$ ls -l -F nginx
client_body_temp/
conf/
fastcgi_temp/
html/
logs/
lua/
proxy_temp/
sbin/
scgi_temp/
uwsgi_temp/

-1 这里是数字1,不是字母l。作用是单列输出。

-F 根据文件、目录等信息在文件名或目录名最后给予附加数据结构

- `*` 代表可执行文件
- `/` 代表目录
- `=` 代表socket文件
- `|` 代表FIFO文件
- `@`代表连接文件
仅列出文件夹中的文件名

当要列出的文件夹包含既有目录还有文件时,可以通过以下命令仅列出其中的文件。

1
2
3
4
# 方法一
$ ls -1 -F | grep -v [/$]
# 方法二
$ ls -l | grep ^[^d] | grep -v "总" | awk '{print $NF}'

释义:

  • [/$] 是正则表达式,意思是匹配所有以 $ 结尾的值

  • [^d] 是正则表达式,意思是匹配所有以 d 开头的值。而 ^[^d] 是取反,意思是所有不以 d 开头的值。

    • -v 参数是非的意思
仅列出文件夹中的目录
1
2
3
4
# 方法一
$ ls -F | grep [/$]
# 方法二
$ ls -d */ | sed 's/\///g'

watch

定期执行命令或程序,并实时将结果显示在屏幕上输出。

1
watch free -m
  1. -b -创建蜂鸣声,如果命令的退出是非零。
  2. -c -解释ANSI颜色序列。
  3. -d -突出在命令输出的变化。
  4. -n -命令执行的时间间隔,默认 1 秒执行一次。
  5. -t -标题显示正在执行的命令和当前时间的信息。
示例:查看拷贝数据的进度
1
cp Xcode_11.xip /home/codezm/ & watch -n 0.1 du -s /home/codezm/Xcode_11.xip

Top

1
2
3
4
5
6
7
8
$ top -bn 1 -i -c
top - 16:59:46 up 16 days, 20:09, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 94 total, 2 running, 92 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.4 us, 0.0 sy, 0.0 ni, 35.7 id, 61.9 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 818.8 total, 120.2 free, 129.6 used, 569.0 buff/cache
MiB Swap: 2048.0 total, 1941.7 free, 106.2 used. 552.0 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  • %us:表示用户空间程序的cpu使用率(没有通过nice调度)

  • %sy:表示系统空间的cpu使用率,主要是内核程序。

  • %ni:表示用户空间且通过nice调度过的程序的cpu使用率。

  • %id:空闲cpu

  • %wa:cpu运行时在等待io的时间

  • %hi:cpu处理硬中断的数量

  • %si:cpu处理软中断的数量

  • %st:被虚拟机偷走的cpu

vmstat

1
2
3
4
5
6
$ vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 108032 188512 1112 500408 1 1 4 4 16 26 0 0 100 0 0
0 0 108032 188452 1112 500424 0 0 0 0 44 83 0 0 100 0 0
0 0 108032 188452 1112 500424 0 0 0 0 47 84 0 0 100 0 0

每间隔 2 秒采集一次,总共采集 3 次。

sar

前提:需要先安装 sysstat 包。

1
2
3
4
5
6
7
$ sar -P 0 -u 1 2
Linux 4.18.0-193.14.2.el8_2.x86_64 (codezm.com) 2021年01月08日 _x86_64_ (1 CPU)

17时09分08秒 CPU %user %nice %system %iowait %steal %idle
17时09分09秒 0 0.00 0.00 0.00 0.00 0.00 100.00
17时09分10秒 0 0.00 0.00 0.00 0.00 0.00 100.00
平均时间: 0 0.00 0.00 0.00 0.00 0.00 100.00

CPU使用率:监控第 0 颗CPU,每间隔 1 秒采集一次,总共采集 2 次。

1
2
3
4
5
6
7
$ sar -q 1 2
Linux 4.18.0-193.14.2.el8_2.x86_64 (codezm.com) 2021年01月08日 _x86_64_ (1 CPU)

17时09分24秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
17时09分25秒 0 112 0.00 0.04 0.02 0
17时09分26秒 0 112 0.00 0.04 0.02 0
平均时间: 0 112 0.00 0.04 0.02 0

进程队列长度和平均负载状态

  • runq-sz:运行队列的长度(等待运行的进程数)

  • plist-sz:进程列表中进程(processes)和线程(threads)的数量

  • ldavg-1:最后1分钟的系统平均负载(System load average)

  • ldavg-5:过去5分钟的系统平均负载

  • ldavg-15:过去15分钟的系统平均负载

1
2
3
4
5
6
7
$ sar -w 1 2
Linux 4.18.0-193.14.2.el8_2.x86_64 (codezm.com) 2021年01月08日 _x86_64_ (1 CPU)

17时10分57秒 proc/s cswch/s
17时10分58秒 0.00 87.00
17时10分59秒 0.00 88.00
平均时间: 0.00 87.50

进程创建的平均值和上下文切换的次数

参考