3.Linux核心实用命令
3.1.Linux中find命令的用法
(1)find的基本用法:find 路径 选项
- 各个参数:
-type #根据文件类型查找,f为文件,d为目录 -name #根据文件名查找 -perm #根据文件权限查找,比如-rw-------,r为4,w为2,所以为6,后面全是0 ,为600,三位一加 -user #根据文件所属主
- 举例:
find /var/log/ -type f -name "*.log" 查找/var/log目录下有.log结尾的文件
find /var/log/ -type d 查找/var/log目录下的所有目录
find /var/log/ -perm 600 -type f -name "*.log" 查找/var/log 下文件权限为所有者读写权限,所有组无权限,其他无权限,以.log结尾的文件。
find /var/log/ -user root -type f -name "*.log" 查找/var/log 下所属者为root,以.log结尾的文件
(2)find的高级用法
参数:
; #可以执行多条命令 \ #转义符,使得这条命令结束 {} #把find命令的结果传递给{} -exec #执行
举例:
find /var/log/ -type f -name "*.log" -exec wc -l {} \; 显示find查询结果的行数
find /var/log -type f -name "*.log" -exec cp -a {} /home/test \; 将find查询到的结果复制到home的test目录下
-mtime #根据文件的变更时间来查找,-n表示更改时间距现在的n天以内,+n表示更改时间距现在的n天以外。
find /var/log -mtime -2 -type f -name "*.log" -exec ls -lrt {} \; 显示前两天到今天这段时间内的以.log结尾的文件
find /var/log -mtime +2 -type f -name "*.log" -exec ls -lrt {} \; 显示前两天之前的所有.log结尾的文件
3.2.防火墙以及selinux介绍
(1)firewall防火墙的使用
防火墙主要用于保护信息安全防护,主要有软件防火墙和硬件防火墙,firewalld防火墙是软件防火墙,在centos7之前默认采用的是防火墙是iptables,而在centos7则采用的是firewall
- 查看firewalld服务状态
systemctl status firewalld
- 开启、重启、关闭firewall服务
开启:systemctl start firewalld.service
关闭:systemctl stop firewalld.service
重启:systemctl restart firewalld.service
- 查看firewall防火墙的状态
firewall-cmd --state
- 查看防火墙开放端口规则
firewall-cmd --list-port
- 开放80端口
firewall-cmd --permanent --add-port=80/tcp (注意:--permanent是永久生效,不加这个参数重启后就失效)
- 加载生效开放的端口
firewall-cmd --reload
- 查询指定端口80是否开放
firewall-cmd --query-port=80/tcp
- 关闭80端口
firewall-cmd --remove-port=80/tcp
安装telnet命令:yum -y install xinetd telnet telnet-server (确认联网状态)
安装netstat与ifconfifig命令:yum -y install net-tools(确认联网状态)
(2)SeLinux的三种共工作模式:配置文件路径:/etc/selinux/config
- enforcing:强制模式,违反selinux规则的行为将会被阻止并记录到日志中。
- permissive:宽容模式,违反selinux规则的行为将会记录到日志,但不会阻止。
- disabled:关闭模式。
3.3.telnet与scp的用法
(1)企业中telnet命令的使用
- telnet命令主要用于测试到某台机器的某个端口是否畅通
- telnet这个命令依赖于xinetd夫妇于telnet-server服务
- telnet命令的安装:yum -y install xinetd telnet telnet-server (确认联网状态)
- telnet命令的用法:telnet IP地址 端口 ;如telnet 192.168.235.130 80
(2)企业中scp命令的使用
scp命令用于服务其之间文件或者目录的拷贝
- 从本机拷贝文件到别的机器:scp 本机文件的存放路径 root@服务器IP地址:服务器目标路径
scp /root/vmware.tar root@192.168.235.129:/root/ 将当前机器的vmware.tar复制到192.168.235.129机器的root目录下
在130机器上执行命令:scp /root/vmware.tar root@192.168.235.129:/root/
- 从别的机器拷贝文件到本地目录:scp root@服务器IP:服务器目标文件的路径 本机文件的存放路径
scp root@192.168.235.129:/root/vmware-tools.tar.xz /root/ 将129机器的vmware-tools.tar.xz拷贝到本地的root目录下
执行命令:scp root@192.168.235.129:/root/vmware-tools.tar.xz /root/
- -r参数:递归的作用(拷贝目录,不加-r会报错)
scp -r vmware-tools-distrib root@192.168.235.129:/root/
3.4.进程管理命令
(1)ps -ef | more
UID PID PPID C STIME TTY TIME CMD root 2 0 0 13:19 ? 00:00:00 [kthreadd] root 3 2 0 13:19 ? 00:00:00 [ksoftirqd/0] root 5 2 0 13:19 ? 00:00:00 [kworker/0:0H] UID:用户名,代表当前进程是那个用户启动的 PID:进程ID PPID:父进程号 C:CPU占用率 STIME:进程启动的时间 TTY:TTY终端 TIME:进程执行起到现在总的CPU占用时间 CMD:启动这个进程的命令
(2)ps aux | more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 2 0.0 0.0 0 0 ? S 13:19 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 13:19 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 13:19 0:00 [kworker/0:0H] USER:那个用户启动了这个命令 PID:进程的ID %CPU:CPU的占用率 %MEM:内存的使用率 VSR:如果一个进程完全驻留在内存中一共使用了多长时间 RSS:进程当前占用了多少内存 TTY:tty终端 STAT:表示当前进程状态(S处于休眠状态,D不可中断状态,Z僵尸状态,X死掉的状态) START:启动这个命令的时间点 TIME:进程总共占用CPU的时间 COMMAND:启动这个进程的命令
3.5.处理海量数据之cut命令
(1)cut命令的基本使用
cut应用场景:通常对数据进行列的提取
语法:cut [选项] …[file]
选项: -d #指定分隔符 -f #指定截取区域 -c #一字符为单位进行分割
(2)以’:'为分隔符,截取出/etc/passwd的第一列跟第三列
cut -d ':' -f 1,3 /etc/passwd cat /etc/passwd | cut -d ':' -f 1,3
(3)以’:'为分隔符,截取出/etc/passwd的第一列到第三列
cut -d ':' -f 1-3 /etc/passwd cat /etc/passwd | cut -d ':' -f 1-3
(4)以’:'为分隔符,截取出/etc/passwd的第二列到最后一列
cut -d ':' -f 2- /etc/passwd cat /etc/passwd | cut -d ':' -f 2-
(5)截取/etc/passwd文件从第二个字符到第九个字符
cut -c 2-9 /etc/passwd cat /etc/passwd | cut -c 2-9
(6)截取linux上面所有可登陆普通用户
cat /etc/passwd | grep '/bin/bash' | cut -d ':' -f 1 | grep -v root
3.6.处理海量数据之awk命令
(1)awk简介
awk是一个非常强大的数据处理命令,支持条件判断,数组,循环等功能,与grep,sed被称为linux三剑客
awk的应用场景:通常对数据进行列的提取
语法:
(1)awk '条件1 {执行动作} 条件2 {执行动作}...' 文件名 (2)awk [选项] '条件1 {执行动作} 条件2 {执行动作}...' 文件名
(2)printf与print的用法
- printf #格式化输出,不会自动换行
- print #打印出内容,默认自动换行
- %s #代表字符串
- \t #制表符
- \n #换行符
printf '%s\t%s\t%s\t%s\t%s\t%s\n' 1 2 3 4 5 6
(3)awk的简单用法
- NR #行号
- $1 #代表第一列
- $2 #代表第二列
- $NF #代表最后一列
- 截取行数是4的第一个在字符
df -h | awk 'NR==4 {print $1}'
- 截取行数是2到5的第一个字符
df -h | awk '(NR>=2 && NR<-5) {print $1}'
- 截取最后一个字符
df -h | awk '{print $NF}'
- 以’:’ 为分隔符, -F #指定分割符
awk -F":" '{print $1}' /etc/passwd
- BEGIN#在读取所有行内容前就开始执行,一般用来初始化操作
cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}'
df -h | grep -v '文件系统' | awk 'BEGIN {printf "文件系统使用情况:\n\n"} {print $1} {printf "文件系统使用率:"} {print $5}'
- END #结束的时候执行
df -h | grep -v '文件系统' | awk 'BEGIN {printf "文件系统使用情况:\n\n"} {printf $1} {printf "文件系统使用率:"} {print $5} END {printf "一切正常\n"}'
3.7.处理海量数据之sed命令
sed主要对数据进行处理(选取、新增、替换、删除、搜索)
sed语法:sed [选项] [动作] 文件名
常见的选项与参数:
-n #把匹配到的行输出打印到屏幕 p #以行为单位进行打印,通常与-n一起使用 d #删除 a #在行的下面插入新的内容 i #在行的上面插入新的内容 c #替换 指定字符串替换:s/要被取代的内容/新的字符串/g #指定内容进行替换 -i #对源文件进行修改(高危操作,慎用,用之前要备份源文件) 搜索:在文件中搜索内容 -e #表示可以执行多条动作
(1)把第2行的文件系统打印在屏幕上
df -h | sed -n '2p'
(2)删除第二行显示,不会对源文件产生影响
df -h | sed '2d'
(3)在第二行下面插入新的内容
df -h | sed '2a 1211212121212121212121212121'
(4)在第二行上面插入新的内容
df -h | sed '2i 1211212121212121212121212121'
(5)将第二行替换成指定字符
df -h | sed '2c 1211212121212121212121212121'
(6)把centos-root替换成centos8
df -h | sed 's/centos-root/centos8/g'
(7)对源文件进行修改
sed -i 's/centos7/centos8/g' df.txt
(8)搜索文件中带有TMP的字符
sed -n '/TMP/p' df.txt
(9)把centos8替换成centos7并且搜索文件中带有TMP的字符
sed -e 's/centos8/centos7/g' -e 's/TMD/g' df.txt