linux常用工具介绍

news2024/11/18 23:30:30

文章目录

  • 前言
  • 目录文件查看
    • ls
      • 1、查看详细信息(文件大小用K、M等显示)
      • 2、按照文件创建时间排序(常在查看日志时使用)
    • sort
      • 1、排序数字
    • df 、du
      • 1、查看目录的大小
      • 2、查看目录 从大到小排序 显示前n个
      • 3、查看磁盘使用情况
    • tailf
    • 一些目录操作
    • find
      • 1、查找 /etc 目录下以 conf 结尾的文件
      • 2、 /etc 目录下,所属用户为 zhangsan 的所有文件
      • 3、查找 /etc 目录下,大于 1M 的文件
      • 4、搜索 /etc 目录下的文件(非目录),文件以 conf 结尾,且大于 10k,然后将其删除。
  • 查看进程信息
    • ps
      • 1、查看所有用户下所有进程
      • 2、查看指定用户下的进程
      • 3、查看指定进程信息
      • 4、查看指定进程的子进程
      • 5、指定进程的展示字段
      • 6、查看线程信息
      • 7、打印进程树
      • 8、配合grep查看想要的进程
    • pstack
    • top
      • 1、监控每个逻辑CPU的状况
      • 2、高亮显示当前运行进程
      • 3、进程字段排序
    • htop
  • 调试
    • file
      • 1、用于辨识文件类型
      • 2、查看core文件信息
    • gdb
      • 1、调试core文件
      • 2、查看相关信息
      • 3、设置相关信息
    • strace
    • perf(root)
  • 查看内核对象
    • ipcs、ipcrm
      • 1、查看共享内存
      • 2、查看消息队列
      • 3、查看信号量
    • lsof
      • 1、获取网络信息
  • 文本操作
    • grep
      • 1、显示行号
      • 2、过滤出不匹配的
      • 3、统计行数
      • 4、显示匹配文件名,递归匹配
      • 5、忽略大小写
    • awk
      • 1、切片打印
      • 2、内置变量
      • 3、内置函数
      • 4、条件使用
      • 5、if 语句
    • sed
      • 1、取消默认输出
      • 2、多次编辑
  • 压缩解压命令
    • tar
  • 其他
    • rz sz
    • watch
      • 1、5秒一次输出系统的平均负载
      • 2、每隔一秒高亮显示网络链接数的变化情况
    • crontab
    • hexdump
      • 1、查看文件

前言

在linux中,有非常多的工具可以使用,并且通过|>等功能串起来使用,相当的强大。
平时在遇到一些线上问题的时候多一个工具的使用,可能就会多一种定位问题的方案。

刚刚接触linux的小伙伴可能会比迷茫,因为工具实在是太多了,虽然有自带的帮助手册(用系统自带的man命令看),但是参数和用法也是真的很多。
这边不介绍的特别详细,具体可以自己百度,只记录一些我常用的。(不常用的想不起来了,像那些vim什么的就不记录了,应该都会的)

目录文件查看

ls

用来查看文件信息

选项含义
-a查看所有文件包括隐藏文件
-l查看文件的详细信息
-d查看目录信息
-h显示文件大小时候便于人阅读
-i查看文件的inode节点
-t将文件依建立时间之先后次序列出
-r将文件以相反次序显示(原定依英文字母次序)

1、查看详细信息(文件大小用K、M等显示)

[appadmin@VM-4-7-centos ~]$ ls -lha
total 32K
drwx------  4 appadmin appadmin 4.0K Mar 22 15:29 .
drwxr-xr-x. 4 root     root     4.0K Mar 22 15:26 ..
-rw-------  1 appadmin appadmin  144 Mar 22 16:11 .bash_history
-rw-r--r--  1 appadmin appadmin   18 Apr  1  2020 .bash_logout
-rw-r--r--  1 appadmin appadmin  193 Apr  1  2020 .bash_profile
-rw-r--r--  1 appadmin appadmin  231 Apr  1  2020 .bashrc
drwxrwxr-x  3 appadmin appadmin 4.0K Mar 22 15:29 .cache
drwxrwxr-x  3 appadmin appadmin 4.0K Mar 22 15:29 .config

2、按照文件创建时间排序(常在查看日志时使用)

最近修改的排在最后面

[appadmin@VM-4-7-centos ~]$ ls -ltr
total 286996
-rw-rw-rw- 1 appadmin users 31457304 Feb 24 22:51 xxx_debug9.log
-rw-rw-rw- 1 appadmin users 31457417 Feb 28 17:01 xxx_debug0.log
-rw-rw-rw- 1 appadmin users 31457524 Mar  4 11:08 xxx_debug1.log
-rw-rw-rw- 1 appadmin users 31457423 Mar  8 05:16 xxx_debug2.log
-rw-rw-rw- 1 appadmin users 31457382 Mar 11 23:23 xxx_debug3.log
-rw-rw-rw- 1 appadmin users 31457323 Mar 15 17:31 xxx_debug4.log
-rw-rw-rw- 1 appadmin users 31457524 Mar 19 11:39 xxx_debug5.log
-rw-rw-rw- 1 appadmin users 31457324 Mar 23 05:47 xxx_debug6.log
-rw-rw-rw- 1 appadmin users 31457330 Mar 26 23:30 xxx_debug7.log
-rw-rw-rw- 1 appadmin users  2396917 Mar 27 15:53 xxx_error0.log
-rw-rw-rw- 1 appadmin users  2429754 Mar 27 15:54 xxx_run0.log
-rw-rw-rw- 1 appadmin users  5598702 Mar 27 15:54 xxx_debug8.log

sort

将文本文件内容按ASCII码值以行为单位来排序

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][文件][-k field1[,field2]]
选项含义
-b忽略每行前面开始出的空格字符
-c检查文件是否已经按照顺序排序
-d排序时,处理英文字母、数字及空格字符外,忽略其他的字符
-f排序时,将小写字母视为大写字母
-i排序时,除了040至176之间的ASCII字符外,忽略其他的字符
-m将几个排序好的文件进行合并
-M将前面3个字母依照月份的缩写进行排序
-n依照数值的大小排序
-u意味着是唯一的(unique),输出的结果是去完重了的
-o<输出文件>将排序后的结果存入指定的文件
-r以相反的顺序来排序
-t<分隔字符>指定排序时所用的栏位分隔字符
+<起始栏位>-<结束栏位>以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位
[-k field1[,field2]]按指定的列进行排序

1、排序数字

按照:分割,第三列数字倒序排序

root@iZ0jlefid9553qupva7d3fZ:/etc# sort -nr -t: -k3 passwd
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
mysql:x:115:125:MySQL Server,,,:/nonexistent:/bin/false
...

df 、du

du 查看目录大小

选项含义
-a显示目录中文件的大小 单位KB
-b显示目录中文件的大小 单位BYTE
-m显示目录中文件的大小 单位MB
-c显示目录中文件的大小 同时也显示总和 单位KB
-s仅显示目录的总值 单位KB
-h以KB、MB、GB为单位显示 提高可读性
–max-depth显示层级

df 查看磁盘使用情况

选项含义
-a查看全部文件系统 单位KB
-h以KB、MB、GB为单位显示 提高可读性

1、查看目录的大小

[appadmin@VM-4-7-centos local]$ du -sh ./*
[root@VM-4-7-centos etc]# du -sh ./*
40K     ./abrt
24K     ./acpi
4.0K    ./adjtime
4.0K    ./aliases
12K     ./aliases.db
4.0K    ./alternatives
4.0K    ./anacrontab
4.0K    ./asound.conf
4.0K    ./at.deny
20K     ./audisp
24K     ./audit
44K     ./bash_completion.d
4.0K    ./bashrc
4.0K    ./binfmt.d
4.0K    ./centos-release
4.0K    ./centos-release-upstream
4.0K    ./chkconfig.d
4.0K    ./chrony.conf
4.0K    ./chrony.keys
...

2、查看目录 从大到小排序 显示前n个

[root@VM-4-7-centos etc]# du -s * | sort -nr | head -15
25588   selinux
8708    udev
1936    pki
656     services
616     ssh
376     sysconfig
272     depmod.d
152     postfix
148     lvm
144     rc.d
144     libreport
112     dbus-1
108     pam.d
100     bash_completion.d
92      systemd

3、查看磁盘使用情况

[appadmin@VM-4-7-centos etc]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        908M     0  908M   0% /dev
tmpfs           919M   24K  919M   1% /dev/shm
tmpfs           919M  860K  919M   1% /run
tmpfs           919M     0  919M   0% /sys/fs/cgroup
/dev/vda1        40G  4.5G   34G  12% /
tmpfs           184M     0  184M   0% /run/user/0
tmpfs           184M     0  184M   0% /run/user/1001

tailf

实时查看日志信息

tailf 文件名

一些目录操作

# 递归创建目录
mkdir -p
# 递归删除
rm -r
# 递归拷贝
cp -r

find

查找文件

find [路径] [选项] [操作]
选项含义
-name根据文件名字搜索
-iname根据文件名字搜索(不区分大小写)
-size根据文件大小查找(+n 大于 -n小于 n等于 n为数据块0.5k)
-user根据文件所有者查找
-group根据所属组查找
-amin根据文件被访问的时间查找
-cmin根据文件属性被改变的时间查找
-mmin根据文件内容是否改变查找
-a两个条件同时满足
-o两个条件满足任意一个即可
-exec/-ok 命令 {} \;对搜索结果进行操作
-type根据文件类型查找(f — 文件 d — 目录 c — 字符设备文件 b — 块设备文件 l — 链接文件 p — 管道文件 )
-inum根据i节点查找
-mindepth n从第 n 级目录开始搜索
-maxdepth n至多搜索到第 n-1 级子目录

1、查找 /etc 目录下以 conf 结尾的文件

find /etc -name '*.conf'

2、 /etc 目录下,所属用户为 zhangsan 的所有文件

find /etc -user zhangsan

3、查找 /etc 目录下,大于 1M 的文件

find /etc -size +1M

4、搜索 /etc 目录下的文件(非目录),文件以 conf 结尾,且大于 10k,然后将其删除。

find /etc -type f -name '*.conf' -size +10k -exec rm -f {} \;

查看进程信息

ps

1、查看所有用户下所有进程

ubuntu@VM-4-4-ubuntu:~$ ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 May17 ?        00:02:55 /sbin/init
root           2       0  0 May17 ?        00:00:04 [kthreadd]
...

STAT:进程的状态

字符意义
D无法中断的休眠状态 (通常 IO 的进程)
I(大写i)空闲内核线程
R正在运行或可运行(在运行队列)
S可中断休眠(等一个时间来完成)
T因作业控制信号而停止
t在跟踪期间被调试器停止
Z不存在但暂时无法消除
W分页(内核2.6.x版本后无效)
X已杀死(应该永远不会看到)
Z僵尸进程

BSD格式:

字符意义
<高优先级
N低优先级
L内存有被锁定的页(实时和自定义IO)
s是会话领导
l(小写L)是多线程的
+在前台进程组里
ubuntu@VM-4-4-ubuntu:~$ ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.5 169284 11116 ?        Ss   May17   2:55 /sbin/init
root           2  0.0  0.0      0     0 ?        S    May17   0:04 [kthreadd]
...

2、查看指定用户下的进程

ubuntu@VM-4-4-ubuntu:~$ ps -fu ubuntu
UID          PID    PPID  C STIME TTY          TIME CMD
ubuntu   2811946       1  0 11:06 ?        00:00:00 /lib/systemd/systemd --user
ubuntu   2811952 2811946  0 11:06 ?        00:00:00 (sd-pam)
...

3、查看指定进程信息

ubuntu@VM-4-4-ubuntu:~$ ps -uf 1333
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        1333  0.0  0.2  12160  4316 ?        Ss   May17   1:31 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

4、查看指定进程的子进程

ubuntu@VM-4-4-ubuntu:~$ ps -f --ppid=1
UID          PID    PPID  C STIME TTY          TIME CMD
root         411       1  0 May17 ?        00:09:30 /lib/systemd/systemd-journald
root         442       1  0 May17 ?        00:00:41 /lib/systemd/systemd-udevd
...

5、指定进程的展示字段

ubuntu@VM-4-4-ubuntu:~$ ps -o pid,ppid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm -u ubuntu
    PID    PPID     TID CLS RTPRIO  NI PRI PSR %CPU STAT WCHAN          COMMAND
2811946       1 2811946 TS       -   0  19   0  0.0 Ss   ep_poll        systemd
2811952 2811946 2811952 TS       -   0  19   1  0.0 S    -              (sd-pam)
...

6、查看线程信息

ubuntu@VM-4-4-ubuntu:~$ ps -elf
F S UID          PID    PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root           1       0  0  80   0 - 42321 -      May17 ?        00:02:55 /sbin/init
1 S root           2       0  0  80   0 -     0 -      May17 ?        00:00:04 [kthreadd]
...

7、打印进程树

ubuntu@VM-4-4-ubuntu:~$ ps -ejH
    PID    PGID     SID TTY          TIME CMD
...
   1333    1333    1333 ?        00:01:31   sshd
2811934 2811934 2811934 ?        00:00:00     sshd
2812115 2811934 2811934 ?        00:00:00       sshd
2812116 2812116 2812116 pts/0    00:00:00         bash
2837661 2837661 2837661 ?        00:00:00     sshd
2837797 2837661 2837661 ?        00:00:00       sshd
2837835 2837835 2837835 pts/1    00:00:00         bash
2839712 2839712 2837835 pts/1    00:00:00           ps
2837694 2837694 2837694 ?        00:00:00     sshd
2837834 2837694 2837694 ?        00:00:00       sshd
2837842 2837842 2837842 ?        00:00:00         sftp-server
...
ubuntu@VM-4-4-ubuntu:~$ ps -axjf
   PPID     PID    PGID     SID TTY        TPGID STAT   UID   TIME COMMAND
...
   1333 2837661 2837661 2837661 ?             -1 Ss       0   0:00  \_ sshd: ubuntu [priv]
2837661 2837797 2837661 2837661 ?             -1 S     1000   0:00  |   \_ sshd: ubuntu@pts/1
2837797 2837835 2837835 2837835 pts/1    2843878 Ss    1000   0:00  |       \_ -bash
2837835 2843878 2843878 2837835 pts/1    2843878 R+    1000   0:00  |           \_ ps -axjf
   1333 2837694 2837694 2837694 ?             -1 Ss       0   0:00  \_ sshd: ubuntu [priv]
2837694 2837834 2837694 2837694 ?             -1 S     1000   0:00      \_ sshd: ubuntu@notty
2837834 2837842 2837842 2837842 ?             -1 Ss    1000   0:00          \_ /usr/lib/openssh/sftp-server
...

8、配合grep查看想要的进程

ubuntu@VM-4-4-ubuntu:~$ ps -aux | grep ssh
root        1333  0.0  0.2  12160  4316 ?        Ss   May17   1:31 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root     2811934  0.0  0.4  13920  8804 ?        Ss   11:06   0:00 sshd: ubuntu [priv]
...

pstack

显示每个进程的栈跟踪,定位具体的函数。

ubuntu@VM-4-4-ubuntu:~$ pstack 32761
#0  0x00007f264e6ba7e0 in __read_nocancel () from /lib64/libc.so.6
#1  0x000000000049d959 in rl_getc ()
#2  0x000000000049e184 in rl_read_key ()
#3  0x000000000048a0e3 in readline_internal_char ()
#4  0x000000000048a755 in readline ()
#5  0x000000000041e66a in yy_readline_get ()
#6  0x00000000004205d2 in shell_getc ()
#7  0x0000000000422f9a in read_token.constprop.6 ()
#8  0x0000000000426369 in yyparse ()
#9  0x000000000041df4a in parse_command ()
#10 0x000000000041e00c in read_command ()
#11 0x000000000041e20c in reader_loop ()
#12 0x000000000041c8ee in main ()

top

性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

选项含义
-b批处理
-c显示完整的治命令
-I忽略失效过程
-s保密模式
-S累积模式
-i<时间>设置间隔时间
-u<用户名>指定用户名
-p<进程号>指定进程
-n<次数>循环显示的次数

效果:
在这里插入图片描述

第一行 任务队列信息

内容含义
17:51:27当前系统时间
up 104 days, 23:39系统运行时间
1 user当前登录用户个数
load average: 0.00, 0.03, 0.05任务队列平均长度,1分钟、5分钟、15分钟的平均负载

第二行 Tasks — 任务(进程)

内容含义
total进程总数
running正在运行的进程数
sleeping休眠的进程数
stopped停止的进程数
zombie僵尸进程数

第三行 cpu状态信息

内容含义
us用户空间占用CPU的百分比
sy内核空间占用CPU的百分比
ni改变过优先级的进程占用CPU的百分比
id空闲CPU百分比
waIO等待占用CPU的百分比
hi硬中断占用CPU的百分比
si软中断占用CPU的百分比
st虚拟 CPU 等待实际 CPU 的时间的百分比

第四行 内存状态

内容含义
total物理内存总量
used使用中的内存总量
free空闲内存总量
buffers缓存的内存量

第五行 swap交换分区信息

内容含义
total交换区总量
used使用的交换区总量
free空闲交换区总量
buffers缓冲的交换区总量

第六行 空行

第七行 各进程(任务)的状态监控

内容含义
PID进程id
USER进程所有者
PR进程优先级
NInice值。负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR共享内存大小,单位kb
S进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU上次更新到现在的CPU时间占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的CPU时间总计,单位1/100秒
COMMAND进程名称

1、监控每个逻辑CPU的状况

按键盘数字“1”
在这里插入图片描述

2、高亮显示当前运行进程

按键盘“b”(打开/关闭加亮效果)
在这里插入图片描述

3、进程字段排序

默认进入top时,各进程是按照CPU的占用量来排序的

敲击键盘大写“P”:CPU占用百分比排序,%CPU
在这里插入图片描述

敲击键盘大写“M”:占据内存百分比排序,%MEM
在这里插入图片描述

敲击键盘大写“T”:累计占据CPU时间排序,TIME+
在这里插入图片描述

htop

具体信息和top类似

在这里插入图片描述

选项含义
-C --no-color使用单色配色方案
-d --delay=DELAY设置刷新间隔时间,单位十分之一秒
-h --help打印帮助信息
-s --sort-key=COLUMN按照指定列排序选择
-t --tree默认值,按照树结构视图显示
-u --user=USERNAME只显示指定用户进程信息
-p --pid=PID,[,PID,PID…]只显示指定pid进程信息
-v --version打印命令版本
快捷键含义
F1获取功能键命令帮助
F2设置区域二展示内容,可以设置颜色方案、列等等
F3搜索,可以搜索command列中的信息
F4过滤,可以过滤command列中匹配的进程
F5按照进程树样式展示
F6排序,根据选择的列排序
F7设置进程优先级,减小优先级
F8设置进程优先级,增加优先级
F9杀死进程,需要先选中进程,然后选择需要发送的信号量
F10退出

调试

file

1、用于辨识文件类型

ubuntu@VM-4-4-ubuntu:/usr/local/comm/lib$ file libjsoncpp.so
libjsoncpp.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=7ecef70859a65f3717a8416eb691304b69ac5706, not stripped

2、查看core文件信息

ubuntu@VM-4-4-ubuntu:~$ file core.10343
core.10343: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from '执行命令', real uid: 1000, effective uid: 1000, real gid: 100, effective gid: 100, execfn: '文件', platform: 'x86_64'

gdb

调试可执行文件,功能非常强大

选项含义
-e指定可执行文件名
-c指定coredump文件
-d指定目录加入到源文件搜索路径
–cd指定目录作为路径运行gdb
-s指定文件读取符号表
-p指定attach进程

调试命令:

命令命令缩写命令说明
set args设置主程序的参数
breakb设置断点
clear删除一个断点
start单步执行,运行程序,停在第一执行语句
runr开始运行程序。运行到第一个断点位置,如果没有断点就直接运行结束
continuec继续运行程序,直到下一个断点或者程序结束
nextn执行当前行。如果当前行包含函数调用,不会进入函数
steps执行当前行。如果当前行包含函数调用,则进入函数,执行函数体第一条语句
finish结束当前函数,返回到函数调用点
listl查看原代码
backtracebt查看函数的调用的栈帧和层级关系
framef切换函数的栈帧
printp显示变量或表达式的值
infoi查看函数内部局部变量的数值
watch使你能监视一个变量的值而不管它何时被改变
set var name = value设置变量的值
quitq退出gdb环境

1、调试core文件

gdb -c core.7707 执行文件

bt

2、查看相关信息

选项含义
info share列出当前共享库
info files列出当前文件
info frame列出栈帧
info register列出寄存器
info thread列出线程

3、设置相关信息

选项含义
set solib-search-path设置so解析路径

strace

用于诊断、调试和教学的 Linux 用户空间跟踪器。

运行模式含义
-p pid跟踪查看某个正在运行的进程的系统调用
cmd直接通过strace启动应用程序
选项含义
-tt在每行输出的前面,显示毫秒级别的时间
-T显示每次系统调用所花费的时间
-v对于某些相关调用,把完整的环境变量,文件 stat 结构等打出来
-f跟踪目标进程,以及目标进程创建的所有子进程
-e控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
-e trace=set仅跟踪指定的系统调用集。例如,trace=open,close,read,write表示仅跟踪这四个系统调用
-e trace=file跟踪所有以文件名作为参数的系统调用
-e trace=process跟踪涉及过程管理的所有系统调用
-e trace=network跟踪所有与网络相关的系统调用
-e trace=signal跟踪所有与信号相关的系统调用
-e trace=ipc跟踪所有与IPC相关的系统调用
-o把 strace 的输出单独写到指定的文件
-s当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是 32 个字节
[root@VM-4-7-centos ~]# strace -e trace=file ls
execve("/usr/bin/ls", ["ls"], 0x7ffeb72daa20 /* 23 vars */) = 0
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libcap.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libacl.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
access("/etc/sysconfig/strcasecmp-nonascii", F_OK) = -1 ENOENT (No such file or directory)
access("/etc/sysconfig/strcasecmp-nonascii", F_OK) = -1 ENOENT (No such file or directory)
statfs("/sys/fs/selinux", 0x7fff5be61af0) = -1 ENOENT (No such file or directory)
statfs("/selinux", 0x7fff5be61af0)      = -1 ENOENT (No such file or directory)
open("/proc/filesystems", O_RDONLY)     = 3
stat("/etc/sysconfig/64bit_strstr_via_64bit_strstr_sse2_unaligned", 0x7fff5be61670) = -1 ENOENT (No such file or directory)
access("/etc/selinux/config", F_OK)     = 0
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, ".", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
compose-project  data
+++ exited with 0 +++

perf(root)

软件性能分析的工具
(目前我用的少,以后再补充)

perf record 收集一段时间内的性能事件到文件
perf report 显示分析数据

效果
在这里插入图片描述

查看内核对象

ipcs、ipcrm

查看、删除消息队列、共享内存、信号

ipcs

选项含义
-m查看共享内存
-q查看消息队列
-s信号量

ipcrm

选项含义
-M以shmkey删除共享内存
-m以shmid删除共享内存
-Q以msgkey删除消息队列
-q以msgid删除消息队列
-S以semkey删除信号
-s以semid删除信号

1、查看共享内存

[appadmin@VM-4-7-centos ~]$  ipcs -m

------------ 共享内存段 --------------
shmkey     shmid      拥有者      权限       字节        nattch     status
0x00000000 0          root       600        657056     5          dest
0x20140304 32769      appadmin   766        4          28
...

dest表示共享内存段已经被删除,但还有程序在连接着它。

2、查看消息队列

[appadmin@VM-4-7-centos ~]$ ipcs -q

--------- 消息队列 -----------
键        msqid      拥有者  权限     已用字节数 消息
0x0bf4f5c9 0          appadmin   666        0            0
0x01312d65 32769      appadmin   666        154          1
...

3、查看信号量

[appadmin@VM-4-7-centos ~]$ ipcs -s

--------- 信号量数组 -----------
键        semid      拥有者  权限     nsems
0x00000000 98304      root       600        14
0x10120110 229377     appadmin   666        1

lsof

列出被各种进程打开的文件信息

打印信息的含义:
-- COMMAND: 命令名称
-- PID: 进程ID
-- USER: 用户ID号或登录名
-- FD: 文件描述符
-- TYPE: 与文件关联结点的类型
-- DEVICE: 设备号
-- SIZE/OFF: 文件大小/偏移量,以字节为单位
-- NODE: 文件结点
-- NAME: 文件挂载点和文件所在的系统

1、获取网络信息

-i [46] [protocol] [@hostname|hostaddr][:service|port]
    46: 分别指 IPv4、IPv6
    protocol: 指 TCP 或 UDP
    hostname:  网络主机名
    hostaddr: IP 地址
    service: 包含在 /etc/services 中的名称
    port: 端口号,可以是多个

查看端口被占用

root@iZ0jlefid9553qupva7d3fZ:~# lsof -i :80
COMMAND      PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
AliYunDun 478066 root   13u  IPv4 4408120      0t0  TCP iZ0jlefid9553qupva7d3fZ:40994->172.16.12.5:http (ESTABLISHED)

加上ip

root@iZ0jlefid9553qupva7d3fZ:~# lsof -i @172.16.12.5:80
COMMAND      PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
AliYunDun 478066 root   13u  IPv4 4408120      0t0  TCP iZ0jlefid9553qupva7d3fZ:40994->172.16.12.5:http (ESTABLISHED)

找出监听端口

root@iZ0jlefid9553qupva7d3fZ:~# lsof -i -sTCP:LISTEN
COMMAND      PID            USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
node         630            root   19u  IPv6   25463      0t0  TCP *:24444 (LISTEN)
systemd-r 264882 systemd-resolve   13u  IPv4 2701294      0t0  TCP localhost:domain (LISTEN)
...

找出已经建立的连接

root@iZ0jlefid9553qupva7d3fZ:~# lsof -i -sTCP:ESTABLISHED
COMMAND      PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
node         630 root   21u  IPv6 3084978      0t0  TCP iZ0jlefid9553qupva7d3fZ:24444->92.63.196.97:53453 (ESTABLISHED)
node         630 root   22u  IPv6   26413      0t0  TCP localhost:24444->localhost:44860 (ESTABLISHED)
...

ipv4信息(ipv6信息把后面的4换成6)

root@iZ0jlefid9553qupva7d3fZ:~# lsof -i 4
COMMAND      PID            USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
node         632            root   25u  IPv4   26412      0t0  TCP localhost:44860->localhost:24444 (ESTABLISHED)
chronyd      860         _chrony    5u  IPv4   25062      0t0  UDP localhost:323 
...

TCP信息(UDP信息把后面的TCP换成UDP)

root@iZ0jlefid9553qupva7d3fZ:~# lsof -i TCP
COMMAND      PID            USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
node         630            root   19u  IPv6   25463      0t0  TCP *:24444 (LISTEN)
node         630            root   21u  IPv6 3084978      0t0  TCP iZ0jlefid9553qupva7d3fZ:24444->92.63.196.97:53453 (ESTABLISHED)
...

文本操作

grep

主要用来:数据查找定位
可使用正则表达式来搜索

选项含义
-i不区分大小写
-n显示结果所在行号
-c统计匹配到的行数
-w匹配整个单词
-o只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行
-e指定字符串做为查找文件内容的样式
-E使用扩展正则表达式
-v排除指定字符串所在的行
-l列出文件内容符合指定的范本样式的文件名称
-L列出文件内容不符合指定的范本样式的文件名称
-A<显示行数>除了显示符合范本样式的那一列之外,并显示该行之后的内容
-B<显示行数>除了显示符合样式的那一行之外,并显示该行之前的内容
-C<显示行数>除了显示符合样式的那一行之外,并显示该行之前后的内容
-f FILE从FILE获取PATTERN匹配
-F相当于fgrep
-r递归查找

1、显示行号

ubuntu@VM-4-4-ubuntu:~$ grep -n ubuntu /etc/passwd
32:ubuntu:x:1000:1000:ubuntu:/home/ubuntu:/bin/bash

2、过滤出不匹配的

ubuntu@VM-4-4-ubuntu:~$ grep -v ubuntu /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

3、统计行数

ubuntu@VM-4-4-ubuntu:~$ grep -c ubuntu /etc/passwd
1

4、显示匹配文件名,递归匹配

ubuntu@VM-4-4-ubuntu:~$ grep -lr ubuntu /etc
/etc/depmod.d/ubuntu.conf
/etc/PackageKit/Vendor.conf
...

5、忽略大小写

ubuntu@VM-4-4-ubuntu:~$ grep -i Ubuntu /etc/passwd
ubuntu:x:1000:1000:ubuntu:/home/ubuntu:/bin/bash

awk

主要用来:数据切片

1、切片打印

根据空格和制表符(-F参数指定分隔符),将每一行分成若干字段
$0 代表标准输入
$1 代表第一个字段
$2 代表第二个字段
以此类推

ubuntu@VM-4-4-ubuntu:~$ awk -F ':' '{ print $1 }' /etc/passwd
root
bin
daemon
...

2、内置变量

变量含义
NF最后一个字段
NR当前处理行数
FILENAME当前文件名
FS字段分隔符,默认是空格和制表符
RS行分隔符,用于分割每一行,默认是换行符
OFS输出字段的分隔符,用于打印时分隔字段,默认为空格
ORS输出记录的分隔符,用于打印时分隔记录,默认为换行符
OFMT数字输出的格式,默认为%.6g
ubuntu@VM-4-4-ubuntu:~$ awk -F ':' '{ print NR ":" $1 }' /etc/passwd
1:root
2:bin
3:daemon
...

3、内置函数

函数含义
toupper字符转为大写
tolower字符转为小写
length返回字符串长度
substr返回子字符串
sin正弦
cos余弦
sqrt平方根
rand随机数
ubuntu@VM-4-4-ubuntu:~$ awk -F ':' '{ print NR ":" toupper($1) }' /etc/passwd
1:ROOT
2:BIN
3:DAEMON
...

4、条件使用

ubuntu@VM-4-4-ubuntu:~$ awk -F ':' 'NR > 1 { print NR ":" toupper($1) }' /etc/passwd
2:BIN
3:DAEMON
4:ADM
...

5、if 语句

ubuntu@VM-4-4-ubuntu:~$ awk -F ':' '{ if (NR > 1) print NR ":" toupper($1); else print FILENAME }' /etc/passwd
/etc/passwd
2:BIN
3:DAEMON
...

sed

主要用来:数据修改

参数

选项含义
-e它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时才需要使用-e选项
-f后跟保存了sed指令的文件
-i直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改
-n取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行

命令

命令含义
a-追加向匹配行后面插入内容
i-插入向匹配行前插入内容
c-更改更改匹配行的内容
d-删除删除匹配的内容
s/正则/替换内容/g-替换替换掉匹配的内容
p-打印打印出匹配的内容,通常与-n选项和用

1、取消默认输出

ubuntu@VM-4-4-ubuntu:~$ sed -n "2,3p" /etc/passwd
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

2、多次编辑

ubuntu@VM-4-4-ubuntu:~$ sed -n -e "1p" -e "2,3p" /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin

压缩解压命令

tar

选项含义
-c打包
-v显示详细信息
-f指定文件名
-z .gz -j .bz2打包同时压缩
-x解包
tar –cvf jpg.tar *.jpg       // 将目录里所有jpg文件打包成 tar.jpg 
tar –czf jpg.tar.gz *.jpg    // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为 jpg.tar.gz 
tar –cjf jpg.tar.bz2 *.jpg   // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2 
tar –cZf jpg.tar.Z *.jpg     // 将目录里所有 jpg 文件打包成 jpg.tar 后,并且将其用 compress 压缩,生成一个 umcompress 压缩过的包,命名为jpg.tar.Z 
rar a jpg.rar *.jpg          // rar格式的压缩,需要先下载 rar for linux 
zip jpg.zip *.jpg            // zip格式的压缩,需要先下载 zip for linux
tar –xvf file.tar         // 解压 tartar -xzvf file.tar.gz     // 解压 tar.gz 
tar -xjvf file.tar.bz2    // 解压 tar.bz2 
tar –xZvf file.tar.Z      // 解压 tar.Z 
unrar e file.rar          // 解压 rar 
unzip file.zip            // 解压 zip 

其他

rz sz

rz - 文件上传
sz - 文件下载

watch

以周期性的方式执行给定的指令,指令输出以全屏方式显示。

选项含义
-n指定间隔的时间
-d高亮显示变化的区域
-d=cumulative变动过的地方(不管最近的那次有没有变动)都高亮显示出来
-t关闭watch命令在顶部的时间间隔
-h查看帮助文档

1、5秒一次输出系统的平均负载

watch -n 5 'cat /proc/loadavg'

2、每隔一秒高亮显示网络链接数的变化情况

watch -n 1 -d netstat -ant

crontab

置定时任务

选项含义
–e修改 crontab 文件。如果文件不存在会自动创建。
–l显示 crontab 文件
-r删除 crontab 文件

hexdump

查看二进制文件

选项含义
-n只格式化输入文件的前length个字节
-c每一字节以ASCII字符显示
-C每一字节以16进制显示,尾部附加16个相应的ASCII字符
-s从偏移量开始输出

1、查看文件

[appadmin@VM-4-7-centos prometheus]$ hexdump -C prometheus.yml
00000000  67 6c 6f 62 61 6c 3a 0a  20 20 73 63 72 61 70 65  |global:.  scrape|
00000010  5f 69 6e 74 65 72 76 61  6c 3a 20 20 20 20 20 36  |_interval:     6|
00000020  30 73 0a 20 20 65 76 61  6c 75 61 74 69 6f 6e 5f  |0s.  evaluation_|
...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/756350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

银河麒麟高级服务器操作系统V10安装mysql数据库

一、安装前 1.检查是否已经安装mysql rpm -qa | grep mysql2.将查询出的包卸载掉 rpm -e --nodeps 文件名3.将/usr/lib64/libLLVM-7.so删除 rm -rf /usr/lib64/libLLVM-7.so4.检查删除结果 rpm -qa | grep mysql5.搜索残余文件 whereis mysql6.删除残余文件 rm -rf /usr/b…

怎么用二维码做企业介绍?企业宣传二维码2种制作方法

怎么做一个企业推广二维码呢&#xff1f;现在制作二维码来做宣传推广是常用的一种方式&#xff0c;一般需要包含企业介绍、工作环境、产品简介、宣传视频、公司地址等等方面内容&#xff0c;那么企业介绍二维码该如何制作&#xff1f;下面给大家分享一下使用二维码编辑器&#…

EventBus详解

目录 1 EventBus 简介简介角色关系图四种线程模型 2.EventBus使用步骤添加依赖注册解注册创建消息类发送消息接收消息粘性事件发送消息 使用postStick()接受消息 3 EventBus做通信优点4 源码getDefault()register()findSubscriberMethods方法findUsingReflection方法findUsingR…

前端部署项目,经常会出现下载完 node 或者 npm 运行时候发现,提示找不到

1. 首先要在下载时候选择要下载的路径&#xff0c;不能下载完后&#xff0c;再拖拽到其他文件夹&#xff0c;那样就会因为下载路径和当前路径不一致&#xff0c;导致找不到相关变量。 2. 所以一开始就要在下载时候确定要存放的路径&#xff0c;然后如果运行报错&#xff0c;就…

【Java基础教程】(十三)面向对象篇 · 第七讲:继承性详解——继承概念及其限制,方法覆写和属性覆盖,关键字super的魔力~

Java基础教程之面向对象 第七讲 本节学习目标1️⃣ 继承性1.1 继承的限制 2️⃣ 覆写2.1 方法的覆写2.2 属性的覆盖2.3 关键字 this与 super的区别 3️⃣ 继承案例3.1 开发数组的父类3.2 开发排序类3.3 开发反转类 &#x1f33e; 总结 本节学习目标 掌握继承性的主要作用、实…

git指令记录

参考博客&#xff08;侵权删&#xff09;&#xff1a;关于Git这一篇就够了_17岁boy想当攻城狮的博客-CSDN博客 Git工作区介绍_git 工作区_xyzso1z的博客-CSDN博客 git commit 命令详解_gitcommit_辰风沐阳的博客-CSDN博客 本博客只作为自己的学习记录&#xff0c;无商业用途&…

计算机存储设备

缓存为啥比内存快 内存使用 DRAM 来存储数据的、也就是动态随机存储器。内部使用 MOS 和一个电容来存储。 需要不停地给它刷新、保持它的状态、要是不刷新、数据就丢掉了、所以叫动态 、DRAM 缓存使用 SRAM 来存储数据、使用多个晶体管(比如6个)就是为了存储1比特 内存编码…

【python】python全国数据人均消费数据分析(代码+报告+数据)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、51CTO技术博主 &#x…

bio、nio、aio、io多路复用

BIO-同步阻塞IO NIO-同步非阻塞IO 不断的重复发起IO系统调用&#xff0c;这种不断的轮询&#xff0c;将会不断地询问内核&#xff0c;这将占用大量的 CPU 时间&#xff0c;系统资源利用率较低 IO多路复用模型-异步阻塞IO IO多路复用模型&#xff0c;就是通过一种新的系统调用&a…

前端开发者都应知道的 网站

1、ransform.tools 地址&#xff1a;transform.tools/ transform.tools 是一个网站&#xff0c;它可以让你转换几乎所有的东西&#xff0c;比如将HTML转换为JSX&#xff0c;JavaScript转换为JSON&#xff0c;CSS转换为JS对象等等。当我需要转换任何东西时&#xff0c;它真的帮…

Java反射机制概述

Java反射的概述 Reflection&#xff08;反射&#xff09;是被视为动态语言的关键&#xff0c;反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息&#xff0c;并能直接操作任意对象的内部属性及方法。 加载完类之后&#xff0c;在堆内存的方法区中就产生了一…

PyTorch: 池化-线性-激活函数层

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 pytorch教程 也可获取。 文章目录 nn网络层-池化-线性-激活函数层池化层最大池化&#xff1a;nn.MaxPool2d()nn.AvgPool2d()nn.MaxUnpool2d()线性层激…

腾讯云2核4G服务器性能如何?能安装几个网站?

腾讯云2核4G服务器能安装多少个网站&#xff1f;2核4g配置能承载多少个网站&#xff1f;一台2核4G服务器可以安装多少个网站&#xff1f;阿腾云2核4G5M带宽服务器目前安装了14个网站&#xff0c;从技术角度是没有限制的&#xff0c;只要云服务器性能够用&#xff0c;想安装几个…

Acrel-3200远程预付费电能管理系统在某医院的应用 安科瑞 许敏

摘要&#xff1a;介绍张家港第一人民医院远程预付费电能管理系统&#xff0c;采用智能远程预付费电度表&#xff0c;采集各租户实时用电量、剩余电量&#xff0c;通过智能远程预付费电度表进行远程分合闸控制&#xff0c;进而实现先售电后用电。系统采用现场就地组网的方式&…

【Java】Tomcat、Maven以及Servlet的基本使用

Tomcat什么是TomcatTomcat的目录结构启动Tomcat MavenMaven依赖管理流程配置镜像源 Servlet主要工作实现Servlet添加依赖实现打包分析 配置插件 Tomcat 什么是Tomcat Tomcat 是一个 HTTP 服务器。前面我们已经学习了 HTTP 协议, 知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务…

Storage、正则表达式

1 LocalStorage 2 SessionStorage 3 正则表达式的使用 4 正则表达式常见规则 5 正则练习-歌词解析 6 正则练习-日期格式化 Storage-Storage的基本操作 // storage基本使用// 1.token的操作let token localStorage.getItem("token")if (!token) {console.log(&q…

海洋水质参数提取

目录 1数据预处理 2 水色参数反演 第一步整理采样点 第二步获取采样星上数据 第三步模型参数反演 第四步叶绿素反演 1数据预处理 第一步安装自定义扩展工具。本节中使用两个自定义扩展工具&#xff1a;ENⅥ_HJ1A1B_Tools.sav&#xff0c;用于环境一号卫星数据读取、辐射定标和波…

《数学模型(第五版)》学习笔记(2)第3章 简单的优化模型 第4章 数学规划模型

第3章 简单的优化模型 关键词&#xff1a;简单优化 微分法 建模思想 本章与第4章连续两章都是优化、规划的问题&#xff0c;可以看成一类问题——内容上也是由简单到复杂。在第3章中&#xff0c;主要是几个简单的优化模型&#xff0c;可以归结到函数极值问题来求解&#xff0…

MySql 数据空洞

大家在使用MySQL数据库的时候经常会发现新建的数据库及表用起来非常的流畅&#xff0c;但是当数据库使用一段时间后&#xff0c;随着数据量的增大再进行数据操作时经常会出现卡顿的现象&#xff0c;哪怕你的表中只有几十条数据也会出现查询时间过长的问题。 下图就是对一张表的…

如何修改电脑中图片的分辨率及DPI提高方法?

​当我们需要上传电子证件照到一些网上报名考试平台时&#xff0c;可能会发现这些平台对于电子证件照的分辨率有一定的限制&#xff0c;那么怎么改图片分辨率&#xff08;https://www.yasuotu.com/dpi&#xff09;呢&#xff1f;想要提高图片dpi可以使用压缩图的修改图片分辨率…