辅助命令
makewhatis #安装whatis命令查看命令解释
help #帮助查看命令
man #查看命令
info #查看命令
ls -a -l -R -ld
cp #拷贝文件
mv #移动或重命名文件
touch #创建空文件/修改文件
rm -rf #递归强制删除
rmkdir #只能删除空目录
history #显示全部历史
history n #显示历史倒数第n条数据
!! #运行上一条命令
!88 #运行第88条数据
history -c #清空历史命令
ctrl+r搜索历史中的字符串可重复执行,回车就是执行查找命令
关机命令
shutdown -h now #立刻关机
shutdown -h 12:00 #系统会在今天12:00关机
shutdown -h +10 #10分钟后关机
shutdown-r now #系统立刻重启
shutdown -r +10 #10分钟后系统重启
reboot #重启系统
halt #关闭系统
运行级别
who -r #显示当前运行级别和系统时间
runlevel #显示前一个(无则显示“N”)、当前运行级别
init n #切换运行级别,n为运行级别数字
Liux运行级别详解
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
运行级别原理
在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service),在/etc/rc.d下有7个名为rcN.d的目录,对应系统的7个运行级别.d目录下都是一些符号链接文件,这些链接文件都指向init.d目录下的service脚本文件,命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字,系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件,对于以K开头的文件,系统将终止对应的服务,对于以S开头的文件,系统将启动对应的服务。
用户、用户组、其他人与权限
cat /etc/passwd #查看用户账号有关的系统文件
cat /etc/shadow #查看与passwd对应的数据
cat /etc/group #查看用户分组信息
用户管理
useradd -p -c -d -g -G -S -u #添加用户
usermod -p -c -d -g -G -S -u #修改用户
passwd -l -u -d -f test #用户口令设置
userdel test #删除用户
userdel -r test #在删除用户的同时删除他的home目录(不建议使用)
用户组管理
groupadd -g -o test #添加用户组
groupmod -g -o test #用户组修改
groupdel test #删除用户组
newgrp root #为当前用户切换用户组
权限管理
ls -al #查看权限内容
chgrp [-R] dirname/filename # 改变所属用户组
chown [-R] 用户账号dirname/filename #改变文件所有者
chmod [-R] mode dirname/filename #改变权限
查看权限
mode权限管理
mode改变权限之数字类型
Linux的基本权限有9个,分别是owner,group,others 三种身份各自的read,write,excute权限,
各个权限对应的数字如下:
r:4、w:2、x:1
为此每种身份各自的三个权限数字相加即可得出数字表示的权限…
例如[-rwxrwx---]可以表示为:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
范例:所以要修改文件权限,改为770即可:
mode改变权限之符号类型
另一种改变权限的方法就是通过符号了,上文提到,Linux总共9种权限,对应着三种身份,为此我们
可以通过u,g,o代表三种身份,另外a代表全部身份。对应的权限可以写为r,w,x,如下图所示:
为wsx设置[-rwxr-xr–],可以使用[chmod u=rwx,g=rx,o=r filename]。
文件系统
mount *** #将设备挂载到某个目录
umount *** #取消挂载点
df -h #查看目录设置
lsblk #查看块设备
du #文件系统的磁盘使用量或目录使用量
dumpe2fs #文件系统
挂载U盘出现乱码
man manout #执行该命令,并使用/iocharset查找,验证编码格式是否为utf-8
mount -o iocharset=utf8 /dec/sdb1 /mnt/udisk #设置外设编码格式是utf8
进程管理
ps aux | grep *** #查看现有进程 ps aux、ps -lA、 ps -ef
ps -l #仅查看自己的bash相关的进程
top *** #动态的观察进程的变化
top -b -n 5 > a.log #需要进行5次top的输出,并将批次导出的结果到处为a.log文件
top -p #指定某些PID来进行观察
pstree -Aup #显示系统进程树同事显示PID与user
kill -l #查看系统目前能够发送的信号
-15正常的死亡 -9 强杀 -1守护进程特殊 -2 与键盘输入Ctrl+C相同 kill 默认使用15
系统资源监控
free #显示内存使用情况
uname -a #显示系统与核心相关信息## ##
uptime #查看系统时间与工作负载
netstat -atp #所有tcp协议的链接,并输出pid好
netstat -antp
netstat -lntp
vmstat 1 4 #侦测系统资源变化 CPU/内存/磁盘输入输出状态,一秒钟侦测一次 共4次
service iptablse start #开启防火墙
service iptablse status #查看防火墙状态
service iptablse stop #关闭防火墙
chconfig iptalse off #永久关闭防火墙
chconfig iptablse on #永久开启防火墙
任务管理
Ctrl+Z #将目前的工作丢到后台暂停
fg #一般实现后台进程的前台显示
cp test test1 & # &符号实现了进程的后台运行,一般用在启动后台进程上
jobs #显示全部后台进程(不含PID)
jobs -l #显示全部后台进程(含PID)
jobs -r #显示正在后台run的任务
jobs -s #显示正在后台暂停的任务
fg 1 #将任务号为1的进程调到前台执行
nohup *** #脱机或注销后正常执行工作
nohup *** & #在后台执行
vim命令
vim的三种模式
- 一般模式 可以删除、复制、粘贴等但无法编辑文件内容。
- 编译模式 使用i、I、o、O、a、A、r、R进入,使用Esc退出
- 命令行模式 在一般模式中输入:/?三个字符中的任何一个可以进入,提供查询、替换、存盘、离开vi、显示行号等命令。
一般模式操作(移动光标)
h 光标左移
j 光标下移
k 光标上移
l 光标右移
Ctrl+f 屏幕向下移动
Ctrl+b 屏幕向上移动
0或Home 移动到此行最前面字符处
$或End 移动到光标所在行的行尾
H 光标一定到当前屏幕最上方的行的第一个字符
M 光标移动到当前屏幕中间行的第一个字符
L 光标移动到当前屏幕最下行的第一个字符
G 移动到此文件最后一行
nG 移动到第n行
gg 相当于1G 即移动到第一行
nEnter 光标下移n行
一般模式操作(查找、替换)
/word 向下查找单词“word”
?word 向上查找单词“word"
n 表示重复前一个查找操作
N与n相反(反向查找)
:s/word1/word2/g 在当前 行 将word1替换成word2
:%s/word1/word2/g 在当前 文件 将word1替换成word2
:n1,n2s/word1/word2/g在n1到n2行查找word1替换成word2(n1,n2为数字)
:1,$ s/word1/word2/g 从第一行到最后一行查找word1 替换成word2
:1,$ s/word1/word2/gc 同上,在替换前需要判断是否替换
一般模式操作(删除 )
x 向后删除一个字符
nx向后删除n个字符(不常用)
X 向前删除一个字符
dd 删除光标所在行
ndd 删除包括光标所在行以下的n行。
d1G 删除包括光标所在行在内到第一行所有数据
dG 删除包括光标所在行到最后一行
d$ 删除光标所在处到同行最后一个字符
d0 删除光标所在处到同行的第一个字符
一般模式操作(复制)
yy 复制光标所在行
nyy 复制光标所在向下n行
y1G 复制光标所在行到第一行所有数据
yG 复制光标所在行到最后一行所有数据
y$ 复制光标所在到同行最后一个字符
y0 复制光标所在处到同行的第一个字符
p 将已复制的数据粘贴到光标所在下一行
P 将已复制的数据粘贴到光标所在上一行
u 复原前一个操作(类似windows中Ctrl+z)
编辑模式操作
一般模式到编辑模式切换
i 从光标所在处插入
I 从所在行第一个非空白字符处插入
a 从光标所在下一个字符处插入
A 从光标所在行最后一个字符处插入
o 在光标所在处下一行插入新的行
O 在光标所在处上一行插入新的行
r 替换光标所在处字符一次
R 一直替换光标所在处文件知道按下Esc
命令行模式
w [filename] 另存为filename
r [filename] 读取filename指定文件中的内容到光标所在的行
n1,n2 w [filename] 将n1到n2 行另存为filename
! command 林芝奇幻到命令行模式下执行command命令
例如 !ls /etc 即可在vim当中查看/etc下面以ls输出的信息
wq 保存后离开
q!不保存并强制离开
set nu 显示行号
set noun 取消显示行号
软件包管理
文件的压缩与打包
gzip与bzip2比较
gzip比bzip2性能好,但bzip2可以获得更高的压缩比
gzip压缩和解压
gzip -cv test.log > test.log.gz #压缩并重定向
gzip -l *.gz #查看压缩比
gzip -ncv test.log > test.log.gz #n为数字 1--9 默认是6 数据越大压缩比越大
gzip -v test.log #不保留原文件
gzip -d **.gz #解压缩
zcat **.gz #查看压缩后的文件
bzip2压缩和解压
bzip2 -z test.log #压缩后不保留源文件
bzip2 -zk test.log #压缩后保留源文件
bzip2 -d **.bz2 #解压缩文件,删除源文件
bzip2 -dk **.bz2 #解压缩文件,不删除源文件
bzip2 -ncv test.log > test.log.bz2 #n为数字 1--9 默认是6 数据越大压缩比越大
tat打包和解压
gzip打包、压缩和解压
tar -zcvf ***.tar.gz /** #打包并按gzip压缩文件
tar -zxvf ***.tar.gz -C /** #将压缩文件解压到指定文件下
tar -ztvf ***.tar.gz #查看打包的内容有哪些文件
tar -zpcvf ***.tar.gz *** #备份文件
bzip2打包、压缩和解压
tar -jcvf ***.tar.bz2 etc /** #打包并按bzip2压缩文件
tar -jxvf ***.tar.bz2 /** #将压缩文件解压到指定文件下
tar -jtvf ***.tar.bz2 #查看打包的内容有哪些文件
tar -jpcvf ***.tar.gz *** #b备份文件
解压相关文件操作
tar -zxvf .tar.gz | grep # 查看压缩包中是否存在相应文件并得到相应目录
tar -zxvf *.tat.gz 查询出的文件目录
rpm安装
rpm默认安装路径
/etc 配置文件放置的目录
/usr/bin 一些可执行文件
/usr/lib 程序使用动态链接库
/usr/share/doc 基本软件使用手册与说明文件
/usr/share/man man page文件
rpm配置
rpm -ivh ****.rpm #安装rpm文件
rpm -Uvh ***.rpm #如果后面文件未安装直接安装。如已安装版本较低直接更新到新版本
rpm -Fvh **.rpm #如果后面接的软件未安装到系统上,该软件不会被安装 只有已安装的软件才会被升级
rpm -qa *** #查询系统已安装的包
rpm -ql *** #查询文件所包含的文件及目录
rpm -qi *** #查询文件相关说明用户名、版本、时间等
rpm -qc *** #查看文件的配置文件内容
rpm -qd *** #查看文件说明文件
rpm -qR *** #查看文件需要的依赖
rpm -V *** #查看软件是否被改动过
rpm -Vf *** #列出某个文件是否被改动过
rpm -Vp **.rpm #列出rpm包中的文件是否在当前系统中安装或修改
rpm -Va *** #列出目前系统上面rpm安装的所有包中被修改过的文件
rpm -e *** #卸载rpm文件
yum使用
yum search *** #查找相关软件包
yum info *** #查看软件包功能
yum info | head ***
yum list | head ***
yum list updates #查询服务器上可供本机进行升级的软件
yum list updates | grep xx.x86_64 #列出可供xx.x86_64升级的版本
yum [install | update | remove] 软件名
yum客户端运行机制
客户端每次运行yum调用install或search的时候,都回去解析/etc/yum.repose.d下面所有以.repo结尾的文件,这些配置文件指定了yum服务器的地址。
yum会定期去"更新"yum服务器上的rpm“清单”,然后把“清单”下载保存到yum自己的cache里面,根据/etc/yum.conf里配置(默认是在/var/cache/yum/x86_64/6下),每次调用yum安装包的时候都会去这个cache目录下找“清单”,根据“清单”里的rpm包描述从而来确定安装包的名字,版本号,所需要的依赖包等,如果rpm包的cache不存在,就去yum服务器下载rpm包安装。
yum服务器端运行机制
所有要发行的rpm包都放在yum服务器上以供别人下载,rpm包根据kernel的版本号、CPU版本号分别编译发布。yum服务器只要提供简单的下载,httpd或ftp。yum服务器一个重要的环节就是整理出每个rpm包的基本信息,包括rpm包对应的版本号,cof文件,binary信息,以及依赖信息。在yum服务器上提供了createrepo工具,用于把rpm包的基本概要信息做成一张“清单”,这张“清单”就是描述每个rpm包的spec文件中的信息。
shell脚本
shell是用户与Linux操作系统之间的接口,提供了与操作系统之间的通讯的方式。
shell基本上是一个命令解释器,它接受用户命令,然后调用相应的应用程序。
关于变量:
全局变量:一般全大写,如环境变量
局部变量:脚本函数中的局部变量通常使用local修饰:表示的是该变量的有效范围在该函数内部有效。
linux命令可以定义变量
${WEEL}day若变量和其他字符组成新的变量就必须给变量价格大括号。
变量的读取和设置
echo $**** #读取shell变量
echo ¥{****} #读取shell变量
env | more #查看环境变量
set | more #同上
export a=1 #设置环境变量值
/etc/prpfile #自定义java环境变量
a=$(date +%F) #定义日期格式为:2017-10-1
数据重定向
就是摸个命令执行后应该要出现在屏幕上的数据,该传输的指定位置的过程。比如传输文件或其他命令
命令分为标准输出和标准错误输出。
数据重定向编号
标准输入(stdin)编号:0
标准输出(stdout)编号:1
标准错误输出(stderr)编号:2
1>:以覆盖的方法,将正确的数据输出到文件
1>>:以累加的方法,将正确的数据输出到文件
2>:以覆盖的方法,将错误输出的数据传输到文件
2>>:以累加的方法,将错误的输出数据传输的文件。
find查找命令 ##
find [path] [option] #查找格式
[path] .当前路径 /从跟目录下查找
[option]
print :将匹配的文件输出到标准输出
size :匹配文件大小
find ./ -size 0
size n:[c]:查找文件长度为n块的文件,带有c时表示文件长度以字节计算。
find .-size +1000c test
name :按照文件名查找
find ./ -name java
find . -name ".java"
perm :按照文件权限来查找文件
find . -perm 755 test
user :按照文件所有者来查找文件
find ~ -user root test
group :按照文件所属的组来查找文件
find / -group root test
mtime -n +n :按文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示更改时间距现在为n天以前
find / -mtime -5 test #5天以内
find / -mtime +5 test #5天以前
nogroup :查找无有效所属组的文件
find / -nogroup test
sed命令
sed是一种在线编辑器。
sed的执行过程如下:
sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间)。然后处理临时缓冲区中的行,完成后把该行发送到屏幕上set每处理完一行就将其从临时缓冲区中删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,set便结束运行,set把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。
sed [option] "[action]" [filename]
option:
h或--help 显示帮助
n仅显示script处理后的结果
V或--version 显示版本信息
e:允许对输入数据应用多条sed命令进行编辑
f 直接将sed的动作卸载一个文件内
action
s:字符串替换
i:插入
d:插入
a:追加
c:c替换
p:打印指定的输出行
sed "s/test/ceshi/g" ceshi.txt #替换原文件test为ceshi
sed -i "s/test/ceshi/g" #修改源文件内容
sed "1 i hi linux" test #n i 在第一行添加
sed "1 a hi linux" test #n a 在第一行后追加
sed "/hdfs/d" test #删除匹配行
grep ##
grep是一种文本搜索工具,它能够使用正则表达式搜索文件。
grep -n -i
tail
把文件的最后几行显示到终端上,如果该文件有更新,tail会自动刷新
tail [-F ] [ -c Number | -n Number | -m Number | -b Number | -k Number] [File]
tail -F filename #显示文件尾部内容默认10行
sort
-n #按照数值排序
-u #不出现重复的行
-t #指定分段的符号
-k #指定的第几段
-r #逆向排序
sort -r test > test1 #对文件进行逆序排序
sort -t "." -k 1 test #对文件进行指定分割符,并对第1个字段排序
cut
cut [-option] filename
option
-b 字节
-c 字符
-f 提取第几行
-d 按指定分隔符分个列