这里写目录标题
Linux 大杂烩
cat
cat可以查看文件,还可以把几个文件合并(more、less)
例如:合并文件 cat file1 file2 > file
head和tail
显示前3行:head -n 3 xxx.txt \ head -3 xxx.txt(默认读前十行)
显示后3行:tail -n 3 xxx.txt \ tail -3 xxx.txt(默认读后十行)
telnet远程登录
telnet 192.168.0.5 22(端口号)登录IP为 192.168.0.5 的远程主机
netstat查询网络状态
-t:列出Tcp协议端口
-u:列出UDP协议端口
-a:列出所有网络连接
-n,不用别名显示,只用数字显示
-p,显示进程号和进程名
例:查看端口占用情况
netstat -anp | grep PID/Program name
单引号和双引号的区别
单引号为纯粹的字符串
双引号中能执行相应命令
name=Andy
echo "The boy is \"$name\""
结果:The boy is "Andy"
find
Linux下查找某一个文件所在位置
一般格式: find + 目录名称 + 参数
参数一:
-name #文件名称
案例一(按文件名称查找)
## 查找/etc/目录下文件名为passwd的文件
## 查找/etc/目录下文件名为passwd的文件
参数二:
-maxdepth #最大深度(即多少层)
-mindepth #最小深度
案例二(按文件所在的深度(层次)查找)
## 查找/etc/目录下最少层数为1,最多层数为2的.conf文件
参数三:
-size #表示文件大小
-size 20k #查找文件大小为20k的文件
-size -20k #查找小于20k的文件
-size +20k #查找大于20k的文件
案例三(按文件大小查找)
参数四:
ctime #以天为单位
cmin #以分钟为单位
cmin 10 #查找文件更新距离现在10分钟的文件
cmin -10 #查找文件更新距离现在小于10分钟的文件
cmin +10 #查找文件更新距离现在超过10分钟的文件
ctime +/-10 #查找文件更新距离现在超过/小于10天的文件
案例四(按文件更新时间)
##创建多个文件
## 查找文件更新时间小于7分钟的文件
## 查找文件更新时间大于1分钟小于1天的文件
watch
可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令
用于监测一个命令的运行结果
语法:
watch(选项)(参数)
选项:
-n 或 --interval 指定没多少秒运行一下程序
-d 或 --differences选项会高亮显示变化区域。而-d=cumulative
-t 或 -no-title 会关闭watch命令在顶部的时间间隔
参数:
指令:需要周期性执行的
实例:
1、命令:每隔一秒高亮显示网络链接数的变化情况
## 原状态如下
## 加入新的连接后的变化
2、每隔一秒高亮显示http链接数的变化情况
watch -n 1 -d 'pstree|grep http'
3、10秒一次输出系统的平均负载
watch -n 10 -d "uptime"
du
用于显示目录或文件的大小。
命令格式:
du [option] 文件/目录
-h:以K,M,G为单位,提高信息的可读性。
-s:显示文件或整个目录的大小,默认单位是KB。
-b:显示目录或文件大小时,以byte为单位。
案例
## 显示当前目录的大小
## 显示temp.txt文件的大小
mkdir
mkdir -p /a/b/c 递归创建目录
文本相关(grep、sed、awk)
grep
-i:忽略大小写
-c:统计出现次数
-n:出现的行数
例:cat | grep -i -n "are" *.txt
ll | grep -i -n "are" *.txt
sed(流处理编程器)
读一行处理一行
- sed是一次处理一行内容,并且不改变原文本的内容(除非重定向)
sed格式
1、命令行格式:
sed [options] 'command' file(s)
options : -e;-n
command : 行定位(正则) + sed命令(操作)
p :打印,亦即将某个选择的数据印出。通常p会与参数 sed -n 一起运行
sed -n 'p' /etc/passwd
2、脚本格式:
sed -f scriptfile file(s)
行定位
定位一行: x; /pattern/
sed -n '10p' /etc/passwd
sed -n '/ntp/p' /etc/passwd
定位多行:x,y; /pattern/,x; /pattern/,/pattern/ x,y!(取反)
nl /etc/passwd | sed -n '10,20p'
nl /etc/passwd | sed -n '/uucp/,/IPv4LL/p'
nl /etc/passwd | sed -n '10,20!p'
定位间隔几行:begin~step
nl /etc/passwd | sed -n '3~3p'
基本操作命令
-a(新增行)/i(拆入行)
-c(代替行)若在一个取件中,整个区间替换成一行
-d(删除行)
nl /etc/passwd | sed '1a 123'
nl /etc/passwd | sed '1i 123'
nl /etc/passwd | sed '1,3c 123'
nl /etc/passwd | sed '1,10d'
例1:优化服务器配置,在test.txt文件末尾添加两行123
补充:$符号表示末尾,\n表示换行,\表示转义
sed '$a \\t123 \n\t123' test.txt
例2:删除空行
sed '/^$/d' test.txt
例3:服务器日志处理,找出test.txt中error报错信息
sed -n '/error/p' test.txt
awk(可编程,灵活)
格式:$ awk [option] 'command' files
解析command=pattern{awk操作命令}
$0 表示一行中所有字段
$1 表示一行中第一个字段
-F ","或者-F ',' 表示按逗号拆分为变量,默认按空格拆分
例1:print和printf打印
awk -F ':' '{print $1" "$2} /etc/passwd
awk -F ':' '{printf("Line:%s Col:%s User:%s\n",NR,NF,$1)}' /etc/passwd
例2:只查看test.txt文件(20行)内第3到第13行的内容
NR:表示记录数量,即行数\n
NF:表示字段数量,F指定分隔符
awk '{print "Line :"NR,"Col :"NF}' test.txt
awk '{if(NR>=20 && NR<=30) print $0}' test.txt
例3:找出文件中有a的记录的第一个字段(正则)
awk '/a/{print $1} test.txt
例4:制表显示/etc/passwd每行的行号、列数、对应行的用户名
BEGIN{执行之前通常初始化}{执行过程}END{执行之后可获取结果}
awk -F ':' 'BEGIN{print "Line Col User"}{print NR"\t"NF"\t"$1}END{print "---"FILENAME"---"}' /etc/passwd
例5:统计当前的文件夹下的文件/文件夹的大小(第五个字段为大小)
ll | awk 'BEGIN{size=0}{size+=$5}END{print "Size is "size}'
例6:统计/etc/passwd的账户人数(排除空行)
补充:正则表达式的匹配与不匹配:~与!~
awk -F ':' 'BEGIN{count=0}$1!~/^$/{count++}END{print "count is "count}'/etc/passwd
例7:统计UID大于100的用户名
引入循环,并把结果存放到一个数组中,遍历数组打印结果
awk -F ':' 'BEGIN{count=0}{if($3>100) name[count++]=$1}END{for(i=0;i<count;i++) print i, name[i]}' /etc/passwd
例8:统计netstat -anp状态下LISTEN和CONNECTED的连接数量
netstat -anp | awk '$6~/CONNECTED|LISTEN/{sum[$6]++}END{for(i in sum) print i, sum[i]}'
软件安装相关
rpm
查询已安装的rpm列表 rpm -qa | grep xx
rpm包基本格式
一个rpm包名:firefox-17.0.10-1.el6.centos.x86_64
名称:firefox
版本号:17.0.10-1
适用操作系统:el6.centos.x86_64
表示centos6.x的64位系统
常用rpm的查询指令
rpm -qa | more 查看所安转的所有的rpm包
rpm -q 软件包名 查询软件包是否安装
rpm -qi 软件包名 查询软件包的信息
rpm -ql 软件包名 查询软件包安装在那个位置
rpm -qf 文件全路径名 查询某个文件属于哪个rpm名
卸载rpm包指令
rpm -e 软件包名
注:1)如果其他软件包依赖于要删除的软件包,卸载时会产生错误信息
2)这种情况下可以增加参数--nodeps,就可以强制删除,但一般不建议这样做,因为可能导致依赖该包的程序无法运行
安装rpm包指令
基本语法
rpm -ivh rpm包全名称
参数说明:
i=install 安装
v=verbose 提示
h=hash 进度条
应用实例(安装firefox)
先找到firefox的安装rpm包,需要挂载上安装centos的iso文件,然后到/media/下去找rpm包。
yum
基于RPM包管理,能够从指定的服务器上自动下载RPM包并且安装,可以自动处理依赖关系,并且一次性安装所有依赖包,前提是可以联网
yum基本指令
1、查询yum服务器是否有需要安转的软件
yum list | grep xx软件列表
2、安装指定的yum包
yum install xx
压缩相关
tar
tar -zxvf xxx文件
-z:表示支持gzip解压文件
-Z:支持compress解压文件
-c:创建新的压缩文件
-x:从压缩文件中提取文件
-v:显示压缩处理详情
-f:指定压缩文件
zip与unzip
zip [参数] [打包后的文件名] [打包的目录路径]
zip -r xxx.zip yyy/ 将指定目录yyy 压缩成xxx.zip文件
-r:将指定的目录下所有的子文件以及文件一起处理
unzip [参数] [待解压缩文件]
unzip -o test.zip -d yyy/
-o:不必先询问用户,unzip执行后覆盖原有文件
-d[目录]:指定文件解压后所要存储的目录
进程相关
ps相关
ps 查看目前系统执行的进程
ps -aux | more
ps -aux | grep sshd 查看是否有sshd服务
-a:显示当前终端所有进程信息
-u:以用户的格式显示进程信息
-x:显示后台进程运行的参数
ps显示字段信息选项:
PID:进程ID
TTY:使用的终端
VSZ:使用的虚拟内存 (单位:KB)
RSS:使用的物理内存情况 (单位:KB)
STAT:进程的状态,s:休眠;r:运行
TIME:此进程所消耗CPU时间
CMD:正在执行的命令或进程名
以全格式显示当前所有的进程,PPID为父进程
ps -ef | grep xxx
-e:显示所有进程
-f:全格式
杀掉进程 kill 和 killall
kill [-9] 端口号
killall [-9] 进程名
killall ->通过进程名称来终止进程【可以使用通配符】
补充:
/bin/bash:表示一个终端
telnet ip (端口号22):测试能否连接该主机
iptables:防火墙服务
查看进程树 pstree
-p:显示进程PID
-u:显示进程所属用户
service 服务管理指令
service 服务名 [start|stop|restart|reload|status]
CentOS 7.0后不再使用功能service,而是systemctl
该方式只是临时生效,重启系统后,回归原状态
而chkconfig指令可以永久生效
查看服务名
一:setup
二:/etc/init.d/服务名称
服务运行级别:7种级别,0~6
0:停机状态,系统默认不能为0,否则不能正常启动
1:单用户状态
3:完全的多用户状态,登录后进入控制台命令行模式
5:x11控制台,登录后进入图形GUI模式
开机说明:
开机--》bois--》/boot--》init进程1--》运行级别--》运行级别对应服务
chkconfig 可以给每个服务各个运行级别设置自启动\关闭
chkconfig --list | grep 服务名
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off 指定某个服务在运行级别5下自启动或不自启动
chkconfig --level 5 sshd off
chkconfig iptables off 在所有运行级别下关闭防火墙
注:chkconfig设置完后,需要重启系统才能生效
进程监控指令
动态监控进程top
top与ps相似,但不同在于top在执行一段时间可以更新正在运行的进程
-d 秒数: 指定top每隔几秒更新,默认时3秒
-i:使用top不显示任何闲置或者僵死进程
-p:通过指定进程ID来仅仅监控某个进程功能
交互操作(输入top显示之后,再进行操作 )
P:以CPU使用功能率进行排序,默认
M:以内存使用率排序
N:以PID排序
q:退出top
监控网络状况
-an:按一定顺序排列输出
-p:显示那个进程在调用