变量

env/printenv:查看全局变量

查看单个环境变量:printenv name,echo $name

set:查看局部变量

export name 临时把一个局部变量设置为全局变量,在父shell中修改会影响子shell,但是在子shell中设置的对父shell无用
unset name :删除变量

一些特殊的环境变量
PATH:当你需要运行一个第三方命令时,系统就会去这个变量对应的目录下面查找,只支持绝对路径,使用冒号分隔,export PATH=$PATH:

持久化变量
系统变量:在/etc/profile.d/下创建一个.sh结尾的文件,把export aaa=xxx写进去
个人变量:修改~/.bashrc

监控

进程

ps

ps -ef
-e:显示所有进程
-f:显示完整格式
状态表

< 表示高优先级的进程(not nice to other users)

N 低优先级(nice to other users)

+ 属于某个前台组的进程

s 某一个回话的leader进程

l 线程加锁

+ 后台运行进程组
  
D 不可中断睡眠 (通常是在IO操作) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生

R 正在运行或可运行(在运行队列排队中)

S 可中断睡眠 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)

T 已停止的 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行

W 正在换页(2.6.内核之前有效)

X 死进程 (未开启)

Z 僵尸进程 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放BSD风格的
[root@master ~]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Feb07 ?        00:01:24 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2     0  0 Feb07 ?        00:00:00 [kthreadd]
root         4     2  0 Feb07 ?        00:00:00 [kworker/0:0H]
root         6     2  0 Feb07 ?        00:01:33 [ksoftirqd/0]
启动用户 进程pid 父进程id 生命周期中cpu使用率 启动时的系统时间 启动的终端 运行累计cpu时间 启动命令

ps -aux
a 显示所有用户的进程(show processes for all users) u 显示用户(display the process's user/owner) x 显示无控制终端的进程(also show processes not attached to a terminal)

[root@master ~]# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  43988  4488 ?        Ss   Feb07   1:24 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S    Feb07   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   Feb07   0:00 [kworker/0:0H]
启动用户 pid  cpu占用率 内存 完全驻存需要内存 实际使用内存 终端 状态 启动时间 总计cpu时间 启动命令

top

top - 10:49:48 up 34 days, 43 min,  1 user,  load average: 0.31, 0.19, 0.16
Tasks: 119 total,   1 running, 118 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.7 us,  1.3 sy,  0.0 ni, 95.6 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem :  3733344 total,   178572 free,   898816 used,  2655956 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2543632 avail Mem 

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                               
18778 root      20   0 1039976 256428  46572 S   2.7  6.9   1053:23 kube-apiserver 
pid 用户    优先级 nice 虚拟内存 物理内存 共享内存 状态

kill/pkill

kill 基于进程号

       kill [-s signal|-p] [-q sigval] [-a] [--] pid...
       kill -l [signal]

pkill基于进程名

NAME
       pgrep, pkill - look up or signal processes based on name and other attributes

SYNOPSIS
       pgrep [options] pattern
       pkill [options] pattern

挂载

查看挂载:mount
查看硬盘使用量:df
查看文件占用存储空间:du
监控cpu和磁盘io情况:iostat

监控文件描述符:lsof
-a file:查看文件占用(-a加不加都行

[root@master 8432]# lsof -a /var/lib/docker/volumes/metadata.db
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
dockerd 8432 root  mem-W  REG  253,1    32768 1183817 /var/lib/docker/volumes/metadata.db
dockerd 8432 root   10uW  REG  253,1    32768 1183817 /var/lib/docker/volumes/metadata.db
命令  pid  user  r读w写u读写 文件类型REG为常规文件 主从设备号 文件大小 节点号 名字

-n dev:查看磁盘占用
-p pid:查看进程打开的文件
lsof -i:port 获取端口占用
-d:列出占用文件号的进程

文件处理

排序

sort -t ":" -k number -n item
-t:分隔符
-k:选择栏数
-n:把数字按照数值排序
-r:降序

搜索

grep parten file
-v:反向搜索
-v:显示行数
-c:显示匹配的行数
-e:匹配多个字段 grep -e xx -e ff file
-q:静默

匹配到了返回值0,没有返回1

归档

tar -cvf test.tar test1/ test2/
将两个目录下的问价归档为test.tar

tar -xvf test.tar
解压

去重

uniq
-c:统计
-u:去重

文本处理

awk

awk -F":" '{print $1}'

系统交互

子shell

把进程挂到后台执行并输出重定向
这种方式运行的后台程序不会因为shell的退出而退出,单纯&会使得程序随着shell一起结束
nohup xxxx >> /tmp/xxx 2>&1 &

查看后台运行中的进程
jobs -l
加号表示当前运行的程序,-表示下一个将要运行的程序
如果想要恢复一个被暂停的进程,可以用bg或者fg+pid,分别对应后台和前台运行

[root@master ~]# nohup sleep 10 >> /tmp/test.log  2>&1 &
[1] 16671
[root@master ~]# jobs -l
[1]+ 16671 Running                 nohup sleep 10 >> /tmp/test.log 2>&1 &
[root@master ~]# jobs -l
[1]+ 16671 Done                    nohup sleep 10 >> /tmp/test.log 2>&1

查询命令文件

[root@master ~]# which echo
/usr/bin/echo

打印程序所使用的共享库列表:ldd

定时任务 at/crontab

创建随机字符串
openssl rand -base64 n

网络

查看域名解析:nslookup

查看网络连接:netstat
-at :显示所有tcp端口
-lt:显示所有tcp监听中的端口
-st:统计所有tcp连接的情况
-pt:显示tcp及对应的pid
-r:显示核心路由信息

找出程序运行的端口
netstat -ap| grep docker

显示数据包到目标地址之间的跳转:tracerout
如果显示*,那是返回数据被防火墙给过滤了
-n 只显示ip不显示主机名
-m number 跳数限制
-w number 探测包等待响应时间

telnet 测试目标端口连通性

快速查看自己的公网ip
curl ifconfig.me

日志

dmesg:内核日志

journalctl
-k dmesg
-f follow
journalctl --since "2021-01-01" --until "2021-09-16 13:40" 查看指定时间内的日志
-n number 显示尾部几行
journalctl _PID=665 查看指定进程的日志
journalctl UID=33 --since today 查看指定用户
-b 本次启动的日志
如果想查看上次的,需要修改系统设置
https://zhuanlan.zhihu.com/p/410995772
修改/var/log/journal
[Journal]
Storage=persistent
systemctl restart systemd-journald


标签: none

添加新评论