====================================================================概述=======================
df
ps
top
pgrep
pkill
killall
重定向 > < 0< 1> 2> &> >&
ln -s
ln -d
diff
uniq
=================================================
看内存情况-----free
free -m -------------查看内存和交换分区的使用情况
-m 指定显示单位为mb 默认单位是 kb
/proc目录内容
cat /proc/cpuinfo CPU信息 cat /proc/meminfo 内存信息 cat /proc/swaps 交换分区 cat /proc/version 版本 cat /proc/scsi ide scsi 设备信息 ide设备信息 cat /proc/net 网络状态与配置文件 cat /proc/sys 核心配置参数 (除了这个文件,其他的是只读) cat /proc/<PID> 以进程PID命名的目录,每个进程的信息分别放在该目录下文件中 cat /proc/sys/net/ipv4/icmp_echo_ignore_all 0关闭 1开启 ping的功能
❗❗❗❗❗❗❗❗❗❗❗❗❗这里好像是 1禁止 0开启,下面同样
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all ---设置禁ping ping 192.168.0.254 是ping不通的。
echo 0 > /proc/sys/net/ipv4/ip_forward ----临时开启路由功能,设置转发功能,可以将Linux系统配置为路由器功能
查看挂载---------df (不加参数 以kb为单位显示容量)
df -h 显示已经挂载的分区,以M为单位显容量 单位进制1024 df -H 显示已经挂载的分区,以M为单位显容量 单位进制1000 df -Th 显示已经挂载的分区和分区对应的文件系统 df -i 显示已经挂载的分区和文件节点数(inode号的数量关系)
进程管理
ps -aux 或者 ps -ajx -a 显示用所有用户启动的进程 --all -u 启动这个进程的用户和它启动的时间(j-----不显示) -x 查看系统中属于自己的进程 -f 显示进程的父子关系
-j或j 采用工作控制的格式显示进程状况。
USER --启动进程用户身份 PID --进程号 %CPU --CPU的利用率 %MEM --内存的利用率 VSZ --预分配的虚拟内存 RSS --真实分配的内存 TTY --在哪个终端启用的进程
STAT --当前进程的状态
D:不可中断的睡眠
R:运行当中的进程
S:可中断的睡眠
T:停止或被追踪
Z:僵尸进程 <子进程结束,但是父亲进程没有wait回收资源 无法正常kill杀死,需要杀死父进程 由系统进程领养,并回收>
-----孤儿进程:产生它的父进程结束了,由1号systemd系统进程领养
d:死掉的进程
<:高优先级别的进程
n/N:低优先级别的进程
s:是一个进程组,代表还有子进程
+:前台进程
l : 该进程中产生了线程
START --进程启动时间 TIME --进程运行了多长时间 COMMAND --用什么命令启动的进程
😢😢😢😢😢发现 -auxf 显示不出来父子关系 -ajxf 才能显示
ps -elf -e 显示所有进程 (搭配ux/jx的时候和a相同 但是单独使用的时候ps -e 可以显示全部 ps -a 不能) -l 长格式 -f 全格式
pstree --以树状的方式查看进程 <yum install -y psmisc> pstree -aunlp -a 显示所有 (此处不能使用e 所以只记a即可) -u 启用进程用户身份 -n 以数字显示进程号 -l 以长格式显示启动命令 -p 进程ID
以动态方式查看进程状态--------------top(上面的几种都是静态的)
查询某个用户进程 root --> u 查询那个进程占用 CPU 最高 --> P 查询那个进程占用 内存 最高 --> M 杀掉进程 --> k 更改显示频率 --> d
❗上方的 参数 在 top enter以后 在查看界面 可以 按这些键 来排序/查看❗
# top
只显示某个进程
# top -p pid
只top查看一次信息
# top -n1
# top -n1 | grep "zombie" | awk '{print $10}' ----获取当前僵尸进程的数量
"杀死"进程-----------------------kill (注意 其实并不是杀死的意思,而是⬇)
✔✔kill 根据进程pid,给进程发信号,信号决定进程的具体行为 (man 7 signal 查看信号默认行为)
信号行为:1.默认行为(死亡) 2.捕捉行为(自定义信号行为) 2.忽略行为
kill PID 发进程发正常关闭信号 (默认发的是15信号) kill -15 PID 发进程发正常关闭信号 kill -9 PID 发进程发强制退出信号<该信号不可捕捉,不可屏蔽,不可忽略> kill -1 PID --让进程重启,并重新加载配置文件<具体的看服务的开发实现手法,大部分服务捕捉1号信号,将默认为死亡的行为 更改为 进程重载的行为> kill -HUP 等价 kill -1
pgrep 以关键字查看进程 <以关键字模糊匹配> <yum install -y procps-ng> pgrep -l bash 以关键字查看进程 pgrep -l ba pgrep -l tty
不加参数 只显示 进程ID 加上 -l 显示pid和进程名
pkill 以关键字杀死进程 <pgrep + kill 组合体 根据关键字模糊匹配>
❗注意此处是 模糊匹配 不是准确的匹配 可能会误杀一些具有相同字段的进程
pkill -9 bash --强制杀死启动命令中包含有bash关键字的进程 pkill -15 -t tty1 --以正常方式关闭tty1终端的所有进程 pgrep -u rpc portmap --杀死以rpc身份启动portmap进程 (pgrep -u root httpd ) pkill -HUP syslogd --让进程重启,并重新加载配置文件 --不提倡使用 pkill -1 syslogd --让进程重启,并重新加载配置文件 pkill -9/15 sshd (service sshd restart )
killall --根据完整的程序名字关闭进程 <yum install -y psmisc>
(注,不是杀死全部的意思,而是杀死完全匹配的进程)
killall -9 bash killall -9 httpd killall -1 bash
nice 优先级 -20到19 (-20最高 19最低) nice -19 /bin/bash --启动某个程序时指定进程的优先级别 指定优先级为 19 等价 nice -n 19 /bin/bash nice --20 /bin/bash ---启动指定优先级别为 -20 等价 nice -n -20 /bin/bash
renice 修改进程优先级别 # renice -20 -p 8054 --更改已经启动的程序的进程优先级别 修改优先级别为-20 等价 renice -n -20 -p 8054 # renice 19 -p 8054 --- 更改进程的优先级别为19 等价 renice -n 19 -p 8054
输入输出重定向
----------------------------------------------------------------------------
🟥重定向的执行顺序是从左到右
❗标准错误: 的意思是,执行一条命令 所报的错
所以 执行 cat /etc/passwd 2> /tmp/dafu
然后用cat 查看/tmp/dafu 的时候发现文件里没有内容
是因为 命令 cat /etc/passwd 本来就没有错 所以 2>没有找到错误 只能写空白
2>
1> ======== >
>& ======= &>
< ======== 0<
❗ > ----------------输出重定向============将命令的输出结果 保存到一个文件中
❗ < -----------------输入重定向========将本该从键盘上输入的内容,用文件来表示
不准确的理解为
输出重定向 就是输出相反(输入) 将屏幕上的内容保存在文件中
输入重定向 就是输入的相反(输出) 将文件中的内容输出到屏幕上
bash的特殊符号: 0 标准输入 (键盘) stdin 0 1 标准正确输出 (屏幕)stdout 1 2 标准错误输出 (屏幕)stderr 2
标准输出重定向(将本身输出到屏幕stdout的内容重定向到文件,文件不存在则创建,如果存在 则清空原内容) ls > /tmp/aaa cat /etc/passwd > /tmp/my.txt
❌❌❌❌❌以下黑体是我学习时候的错误理解❌❌❌❌
标准正确输出重定向
cat /etc/passwd 1> /tmp/my.txt-----------写到文件中后 可以用cat 查看到
标准错误输出重定向cat /etc/passwddddd 2> /tmp/err.txt -----❗执行后直接显示在屏幕上,用cat查看文件的时候看不到---
将标准输出重定向到/tmp/info.txt 将标准错误重定向到 /tmp/err.txt ls -l /etc/services /etc/eeeeeeeeeee 1> /tmp/info.txt 2> /tmp/erro.txt
❗&> 将标准正确输出和错误输出都重定向到 /tmp/info.txt ls -l /etc/services /etc/eeeeeeeeeee &> /tmp/info.txt
标准输出追加重定向(将本身输出到屏幕stdout的内容追加重定向到文件,文件不存在则创建,如果存在 则追加到末尾) ls -l / >> /tmp/aaa cat /etc/passwd >> /tmp/my.txt ls -l / 2>> /tmp/aaa ls -l / &>> /tmp/aaa
❗❗❗>覆盖>>追加
>
>> --输出追加重定向
2> --错误覆盖输出重定向
2>> --错误追加输出重定向
&> --输出正确/错误覆盖重定向
&>> --输出正确/错误追加重定向
以上这一小部分是对着笔记的第一次肤浅理解^^^^^^^^^^^^^^^^^^^^^^^^
软连接/硬连接
ln -s(软) / -d (硬) destFile(目标文件 建议用绝对路径) linkFile(链接文件)
软链接(符号链接):ln -s ---------------------------------------”指针“------------“快捷方式” ln -s /var/ftp/notes/ /root/Desktop/notes.lnk
删除链接rm -fr /root/Desktop/notes.lnk
❗❗❗注意:删除目录链一定注意末尾不要带 ‘/’ 目录分隔符号
不带/---------删除这个连接文件(相当于删除“快捷方式)
带/------------删除连接指向的文件本身(相当于删除程序文件)
硬链接(必须是同分区) ln -d (其实为文件别名)-------------------------------”别名“ ln -d /etc/sysconfig/network /root/Desktop/hostname
❗❗❗区别: 1、硬链接必须在同一个分区 <跨分区无法确保indoe号唯一> 2、软连接可以跨文件系统 ,硬连接不可以 。 3、软连接可以对一个不存在的文件名进行连接 4、软连接可以对目录进行连接 <不可以对目录硬链接 无法避免文件系统的死循环 ls -R>。
5、目录是有硬链接的 ,但是内核不允许我们自己对目录作硬链接
❗❗❗❗❗❗总结: 软链接是另一个文件,作用可以理解为一个指针,作用在这个文件上的操作除了删除都直接转向实际指向文件,由于是一个真实的文件所以占用磁盘空间 硬链接可以认为不是一个文件,它只是实际文件的一个别名,它的作用是防止真实文件被误操作,给一个文件建立硬链接后,他们互为别名,删除其中任意一个, 只会删除该别名,实际文件并不会被删除。由于只是别名没有任何其他信息,所以并不占用原始文件大小的磁盘空间。
给a文件建立 了一个硬连接b之后,a文件和b文件是平等 都是a文件里面内容的别名
以下为百度解释:
1.查看两个文件之间不同的地方-------diff
-b 忽略空格引起的不同(字符后面的空格) -i 忽略大小写 -B 忽略插入空行引起的变化(回车) #diff /etc/passwd /tmp/passwd
2.uniq --去除重复行(处理连续的重复行) 只是在显示的时候去重 不会改变原文件
-c 统计重复的行数有几行 -i 忽略大小写 -d 只显示重复的行
#uniq /tmp/passwd #uniq -d /tmp/passwd | head -2 &> aa.txt
3.sort --排序
-r 反向 -n 以数字来排序 -u 合并同类 -t 指定分隔符 -k 指定的列
❗ 使用k之前必须要有分割符t
sort -t ':' -k3 -n /etc/passwd
#head /etc/passwd | sort -t ':' -k3 -n
4.cut 用于提取行间数据的特定内容
-b byte以字节为单位提取内容 -c 以字为单位提取内容,中文一个字也视为一个字 -f 以字段为单位提取 必然结合 -d 指定字段的分割符 -f3 -f-3 -f3- -f3-6 -f3,6
-d 指定分隔符,默认以 \t 为分割 --output-delimiter=' ;' 将字段分隔符号输出时该变为 ‘;’ -s 如果数据中不包含 -d 指定分隔符标志的 行记录将排除
-b [n] -b [n-] -b [-n] -b [n-m]
-c [n] -c [n-] -c [-n] -c [n-m]
-f [n] -f [n-] -f [-n] -f [n-m]
# cut -b 3 /etc/passwd ---提取passwd文件的第三个字节 # cut -b 3- /etc/passwd ---提取passwd文件 从第3个字节到最后 的内容 # cut -b -3 /etc/passwd ---提取passwd文件 前3个字节 的内容 # cut -b 3-10 /etc/passwd ---提取passwd文件 第3个到第10个字节 的内容 # cut -b 3-10, 20 /etc/passwd ---提取passwd文件 第3个到第10个字节 以及第20个字节 的内容
# cut -c 3 /etc/passwd ---提取passwd文件的第三个字符
# cut -d':' -f 1- --output-delimiter=' ;' /etc/passwd ----提取passwd文件的所有字段 输出分隔符为';'
# cat txt 我 爱 中 国 # cut -b1-3 txt ----- ❗一个中文字由3个字节编码而成 我 # cut -c1 txt ---- -c 中文也视为一个字符 我
- utf-8中----------------字母一个字节 ,汉字三个字节
- scll中-------------------字母一个字节,汉字两个字节
cut -c1-3 /etc/passwd cut -d: -f7 /etc/passwd grep root /etc/passwd |cut -d : -f7 截取7字段 grep root /etc/passwd |cut -d : -f1,7 截取1和7字段 grep root /etc/passwd |cut -d : -f1-3 截取1到3字段
# head /etc/passwd | cut -d: -f1,2 # ifconfig | grep -w "inet" | cut -d' ' -f10 # cut -d: -f7 /etc/passwd | uniq -d | grep bash
5.wc -统计文件的行、词、字数 !!! 词的分隔符只识别空格 回行
-l 行数 -c 字符数 -w 单词 #cut -d: -f7 /etc/passwd |sort |uniq|wc -l ---统计passwd文件中shell字段有几种值
6.tr --替换,只能接受输入重定向的文件流
❗也就是说 替换的效果只能展示到屏幕上 不能给更改原文件
-d 册除某个指定的字符串 #tr a-z A-Z < sort2.txt 替换所有小写变成大写 或者 #cat sort2.txt | tr a-z A-Z # tr -d a < sort2.txt 删除字符'a' # tr A-Z a-z < /etc/passwd 替换所有大写变成小写 # tr -d "a-z A-Z" < sort2.txt 删除所有大小写字母
tr -d "0-9[/]" < /tmp/passwd 删除任意数字或符号‘/’
❗删除符号的时候要用【】括起来
7.paste --合并两个文件
paste /tmp/passwd /tmp/shadow root❌0:0:root:/root:/bin/bash root:$1$JHbAjuRY$cRnTawig2A8mUNj4ZX9DW1:15194:0:99999:7:::
tee 双向重定向 head /etc/passwd > 10.txt tail /etc/passwd | tee 10.txt
tr "a-z" "A-Z" < 10.txt | tee 10.txt