复习一下Liunx常用命令。
文件部分
ls命令
````
-rw-r--r-- 1 root root 5661 Sep 4 18:25 text.txt
[1] [2] [3] [4] [5] [6] [7]
````
- [1] 对应文件权限:
- [-]表示文件。
- [d]表示目录。
- [l]表示连接文件。
- [b]表示设备文件里的块设备。
- [c]表示设备文件里的字符设备。
- [s]表示套接字文件。
- [p]表示管道文件。
- 接下来3组[rwx],第一组表示文件所有者的权限,第二组表示同用 户组的权限,第3组表示其他非本用户的权限。
- [2] 表示连接此文件的数量
- [3] 表示文件所有者的账号
- [4] 表示文件所属用户组的账号
- [5] 表示文件容量大小,默认为B
- [6]表示文件创建时间或者最近修改时间
- [7]表示文件名
cd,pwd命令
.: 代表此层目录
..: 代表父目录
-: 代表上一个工作目录
~: 代表目前用户主目目录
- 切换工作目录:
cd [相对路径或者绝对路径]
- 显示目录路径
pwd : 显示当前目录的绝对路径
mkdir,rmdir命令
- 创建目录
mkdir -[mp] 目录名称
-m 配置权限,默认(umask) 例:mkdir -m 711 dir
-p 递归创建,默认情况下目录必须一层一层创建
- 删除空目录
rmdir -[p] 目录名称 -p 递归删除
chgrp,chown,chmod命令。
- 修改文件的所有者:
chown [-R] 账号名称 文件或目录
- 修改文件的用户组
chgrp [-R] dirname/filename [-R] 递归修改
- 修改文件权限
R: 4 W:2 R:1- 数字修改方式
chmod +x 文件或目录 x:xyz之和
- 符号修改方式
chmod u|g|o|a +(加入) r|w|x 文件或目录
chmod u|g|o|a -(减去) r|w|x 文件或目录
chmod u|g|o|a x(设置) r|w|x 文件或目录
u: user g: group o: other a: all
目录与文件权限的意义
- 权限对普通文件的意义:
- r:读取文件的内容
- w : 编辑,修改文件内容
- x : 可以执行。
- 权限对目录文件的意义
目录的主要内容是记录文件名列表- r : 查询文件名数据
- w : 更改目录文件内容的。意思是可以删除目录内文件和新增文件。与x权限配合才可以。
- x:代表用户能否进入该目录使之成为工作目录。如果你不具有x权限,那么你不能切换到该目录下,也就无法执行与该目录有关的任何命令。
比如有个目录test: rw-。但mkdir test/tes2等命令会失败,尽管你有w权限。
which,whereis,find命令
- which命令:寻找可执行文件
例:which ls 根据path环变量的路径寻找
- whereis命令:寻找特定文件:二进制,帮助文件
````
whereis [-bmsu] 文件名或目录
````
- locate命令
locate -i 文件名和目录 -i 忽略大小写 locate 和whereis 都是从数据库中查找,更新数据库updatedb.
- find命令
find [path] [option] [action] option:-atime,-ctime,-mtime find -mtime -n。n天以内包括(n)修改过的文件。 find -mtime n。n天之前的一天之内修改过的文件。 find -mtime +n。n天之前(不包含n)修改过的文件。 option:-uid,-gid,-user ,-nouser,-nogroup find / -user admin 查找根目录下数以admin的文件 ...... option:-name,-size,-type,-perm find -name xx 找到名为xx的文件 find -size [+|-]50[c|k] 找到大小在50 find -perm
zip命令
-
- .z compress程序压缩文件
- .gz gzip程序压缩的文件
- .bz2 bzip2程序压缩的文件
- .tar tar程序打包的数据,没有压缩过
- .tar.gz tar打包,经过gzip的压缩
- .tar.bz2 tar打包,经过bzip2压缩
-
gzip
gzip [-cdtv] filename c 显示数据,v显示压缩比· gzip filename 压缩文件 gzip -# filename #压缩等级1-9,6合适 gzip -d filename 解压文件
-
bzip2
bzip2 [-cdkzv#] filename bzip2 filename 压缩文件 bzip2 -k filename 保留源文件压缩 bzip2 -# filename #压缩等级 bzip2 -d filename 解压
tar命令
-
压缩打包
tar [-j|-z] [cv] [-f 新文件名] filename -j和-z 选择bzip2压缩还是gzip压缩 -c 新建打包文件 -v 打包过程中间将处理的文件显示出来 tar -jcv -f txt.tar.bz2 txt tar -zcv -f txt.tar.gz txt
解压解包
tar [-j|-z] [xv] [-f 新建文件名] [-C 目录]
-j和-z 选择bzip2解压还是gzip解压
-x 解打包
-v 打包过程中间将处理的文件显示出来、
tar -jxv -f txt.tar.bz2 -C .
- 查看
tar -jtv -f txt.tar.bz2
用户部分
su命令
su - user // 注意-号加不加的区别
su - -c 命令 // 执行该命令后回复原身份
w,who,last,lastlog命令
w/who: 列出目前已经登录的用户
lastlog: 列出每个账号最近登录的时间
last: 从系统开始到目前登录用户情况
系统资源部分
ps命令
-
ps -l : 仅仅查看自己bash相关的进程
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 500 3639 3637 0 75 0 - 1287 WAIT PTS/1 00:00:00 bash 4 R 500 3700 3639 0 77 0 - 1101 - pts/1 00:00:00 ps
- F:代表进程标志,说明进程权限
- S : 代表进程的状态,主要有:
- R:正在运行
- S:睡眠
- D:D,不可被唤醒的睡眠,等待I/O
- T:停止状态
- Z:僵尸进程
UID:用户ID
PID:进程ID
PPID:父进程ID
PRI和NI
PRI表示进程优先级,有内核动态调整,用户无权干涉。NI值用户可以调整。ROOT调整范围-20 ~ 19,一般用户0 ~ 19,值越小,越有可能被优先执行。SZ:代表用掉多少内存
WCHAN:表示进程目前是否正在运行中。-表示在运行
TTY:登陆者终端位置
TIME:用掉的CPU时间
CMD:触发此进程的命令
-
ps aux:查看系统所有进程
ps aux 结果如图:USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 13639 0.0 0.2 2064 616 pts/1 Ss 11:44 0:00 -bash ......
- USER:用户名
- PID:
- %CPU:用掉的CPU资源百分比
- %MEM:该进程占用的物理内存百分比
- VSZ:使用掉的虚拟内存量
- RSS:占用的固定内存量
- TTY:属于哪个终端机
- STAT:目前状态
- START:触发启动时间
- TIME:实际使用CPU时间
- COMMAND: 触发进程的命令
-
pstree 进程树
- pstree -up up表示同时列出所属账号和PID
top命令
-
top 命令
- 第一行显示的信息分别为:
- 目前的时间
- 开机到目前的时间
- 已经登录的系统用户数
- 系统在1,5,15分钟的平均工作负载
- 第二行显示的信息:
- 目前进程总数,以及各状态的进程数量
- 第三行CPU的整体负载
- %us
- %sy
- %ni
- %id
- %wa
- %hi
- %si
- %st
- 第四行物理内存使用量
- 第五行虚拟内存使用量,交换分区
- 第一行显示的信息分别为:
-
在top执行过程中:可以输入以下命令:
- P 按照CPU使用排序
- M按照内存资源使用排序
- N按照PID使用排序
top -d 5 界面更新的秒数
top -b -n 2 > text 可以将结果写入文件
netstat命令
netstat -[atunlp]
-a:列出目前系统上所有的连接,监听,socket
-t:列出tcp网络数据包数据
-u:列出udp网络数据包数据
-n:不列出进程的服务名称,以端口号来显示
-l:列出目前正在监听的网络
-p:列出网络服务的PID
free命令
free [-b-k-m-g] [-t]
-b,-k,-m,-g 控制显示格式:b(byte),-k(kb),-m(mb),- g(gb)
-t 输出结果显示物理与虚拟内存总量
uname命令
uname
-a:所有系统相关信息
-s:系统内核
-r:内核版本
-p:CPU类型
......
软件管理部分
rpm命令
rpm -ivh xx 安装软件
rpm -e xx 卸载软件
rpm -qa 列出所有已安装的软件
rpm -qi xx 列出该软件的详细信息
rpm -ql xx 列出该软件所有的文件与目录
rpm -qf xx 找出该文件与哪个被安装的软件有关
rpm -qc xx 列出该软件所有设置文件
yum命令
yum install xx 安装
yum remove xx 卸载
yum update xx 升级
yum info xx 查询
yum search xx 搜索
vim部分
h,j,k,l: 左,上,下,右移动光标
0: 移动到这一行行首
$: 移动到这一行末尾
H: 移动到屏幕最上方那一行第一个字符
L: 移动到屏幕最下方那一行第一个字符
G: 移动文件最后一行
gg: 移动文件第一行
N[ENTER]:光标向下移动n行
dd: 删除
yy: 复制光标所在行
p: 粘贴
u: 撤销
:r filename 在当前文件内打开另一个文件
:w filename 当前文件另存为
:sp filename 纵向分屏打开
:vp filename 横向分屏打开
:qa 关闭多个文件
:/word 查找word
:1,$s/word1/word2/g 从第一行到最后一行将word1替换为word2
shell部分
alias命令
alias lm='ls -al' 设置命令别名
unalias lm 取消
type命令
数据流重定向
-标准输入, 代码为0,使用< 和 <<
-标准输出, 代码为1,使用> 和 >>
-标准错误输出,代码为2,使用2>和2>>
命令执行判断
- cmd1;cmd2
sync; sync; shutdown -f
- cmd1 && cmd2
-- 若cmd1执行正确则执行cmd2
-- 若cmd1执行错误则不执行cmd2查看txt文件是否存在,存在就新建txt2。 ls txt && touch txt2
- cmd1 || cmd2
-- 若cmd1执行正确则不执行cmd2
-- 若cmd1执行错误则执行cmd2查看txt文件是否存在,不存在就新建txt。 ls txt && touch txt
- cmd && cmd1 || cmd2
--cmd 执行成功则执行cmd1,执行失败则执行cmd2查看txt是否存在,存在输出exit,不存在输出no exit test -f txt && echo 'exit' || echo 'no exit'
shell变量
-
基础
name="admin" echo '$name' 输出:$name echo "$name" 输出:admin unset name 取消变量
-
环境变量
env 查看环境变量 set 查看所有变量(环境变量与自定义变量)
-
变量声明
declare -[aixr] variable -i 声明定义为整数类型 例子:declare -i sum=10+20 -r 将变量设置成readonly类型。不能修改,也不能重设 -a 将变量定位数组类型
shell脚本
- shell脚本执行方式
- sh shellscript.sh和./shellscript.sh都是在使用一个新的bash环境(子进程)来执行脚本内的内容。
- source shellscript.sh是在原父进程执行脚本内容。
- shell 脚本默认变量
- $# 表示参数个数
- $@ 表示$1,$2,$3......
- 常见判断式
判断式 | 意义 |
---|---|
test -e filename | 判断文件名是否存在 |
test -f filename | 判断文件名是否存在且为文件 |
test -d filename | 判断文件名是否存在且为目录 |
...b c S p L... | 判断文件名是否存在且为块设备,字符设备,Socket文件,管道文件,连接文件 |
test -r filename | 检测该文件名是否存在且具有读权限 |
test -w filename | 检测该文件名是否存在且具有写权限 |
test -x filename | 检测该文件名是否存在且具有执行权限 |
test n1 -eq n2 | 2个数相等 |
test n1 -ne n2 | 2个数不等 |
test n1 -gt n2 | n1大于n2 |
test n1 -ge n2 | n1大于等于n2 |
test n1 -lt n2 | n1小于n2 |
test n1 -le n2 | n1小于等于n2 |
test str1 = str2 | 字符串str1是否等于字符串str2 |
test str1 != str2 | 字符串str1是否不等于str2 |
test -z str | 判断字符串str是否为空串 |
-a | 2个条件同时成立 test -r file -a test -x file |
-o | 任何一个条件成立 |
! | 反向 |
-
利用判断符号[]
[ -f filename ] 判断文件名是否存在且为文件 [ ${var} == "Y" -o ${var} == "y" ] 判断用户选项
-
if--else
if [条件判断式]; then ...... else ...... fi
if--elif--else
if [条件判断式一]; then
......
elif [条件判断式一]; then
......
else
......
fi
-
case esac
case $变量名称 in "第一个变量内容") ...... ;; # 有2个分号 "第二个变量内容") ...... ;; # 有2个分号 ...... esac
-
for do done循环
// 固定循环 for var in con1, con2, con3 do ...... done // 数值处理 for i in $(seq 1 100) do ...... done for ((i=1; i <=100; i++)) do ...... done
-
while do done循环
while [条件判断式] do ...... done
-
until do done循环
until [条件判断式] do ...... done
-
函数
// shell script的执行方式是由上而下,由左而右。 function name() { ...... }