linux shell 常用命令总结
3.1文件目录操作
ls 打印目录清单
ls [选项] [文件]
选项:
-a 列出目录下的所有文件,包括以.开头的隐含文件。
-A 同-a ,但不列出"."和".."
-i 显示每个文件的inode号
-k 以KB的形式表示文件的大小。
-l 将文件的权限、所有者、文件大小等信息详细列出来。
-r 逆序排列
-R 递归显示子目录
-s 以块大小为单位列出所有文件的大小
-S 根据文件大小排序
ls –l 可以写成ll
cd 进入目录
cd [-L 或 -P] [选项]
-L 如果目标目录是一个符号链接,则切换到符号链接文件的目录
-P 如果目标目录是一个符号链接,则切换到符号连接指向的目录
选项:
cd -#回到上次所在目录
cd #回到主目录
cd /#切换到根目录
cd #切换到_上级目录
cp复制文件或者目录
cp [选项] [-T] 文件 目的
cp [选项] 文件... 目录
cp [选项] -t 目录 文件...
选项
-a 此参数的效果和同时指定"-dpR"参数相同
-f 强行复制文件或目录,不论目标文件或目录是否已存在
-i 覆盖既有文件之前先询问用户
-p 保留源文件或目录的属性
-r:若给出的源文件是一个目录文件,将复制该目录下所有的子目录和文件。
-i 覆盖前询问(使前面的 -n 选项失效)
-l 链接文件而不复制
-L 总是跟随符号链接
-n 不要覆盖已存在的文件(使前面的 -i 选项失效)
复制的 log.log 建立一个连结档 log_link.log
cp -s log.log log_link.log
将当前目录下的file1 文件 ,复制到/tmp/test 目录中并且改名为file2
cp file1 /tmp/test/file2
mkdir 创建目录
如果命令没有路径名,则在当前目录下创建
mkdir [选项]... 目录名(可包含路径)...
选项:
-m 设定权限<模式>
-P 递归创建多级目录
-V 每次创建新目录都显示信息
--help 显示此帮助信息并退出
--version 输出版本信息并退出
rmdir 删除空目录
必须具有被删除目录的父目录的 写权限
rmdir [选项] directory
选项:
-p :递归删除目录
-V :显示命令的详细执行过程;
--help :显示命令的帮助信息;
--version :显示命令的版本信息
--ignore-fail-on-non-empty :忽略由目录非空产生的所有错误
删除/temp和其子目录/test
rmdir -p /temp/test
删除/temp和其子目录/test ,并显示详细信息
rmdir -pv /temp/test
rm 删除文件或目录
删除目录中的一个或多个 文件或目录,也可以删掉整个目录及其子目录
对于链接文件,只是删除整个链接文件,而原有文件保持不变
rm [选项] 文件
选项:
-d :直接把欲删除的目录的硬连接数据删除成0 ,删除该目录
-f :强制删除文件或目录
-i :删除已有文件或目录之前先询问用户
-r或-R :递归处理,将指定目录下的所有文件与子目录一并处理
-V :显示指令的详细执行过程
--preserve-root :不对根目录进行递归操作
强制删除/temp/test目录及其目录下的所有文件和目录
rm -rf /temp/test
使用交互式凡是删除/root/file目录及其目录下的所有文件和目录
rm -r /root/file
mv 移动或重命名文件
mv [选项] 源文件或目录 目标文件或目录
选项
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
文件改名
mv test.log test1.txt
移动文件
mv test1.txt test3
将文件log1.txt,log2.txt,log3.txt移动到目录test3中。
mv log1.txt log2.txt log3.txt test3
mv -t /opt/soft/test/test4/ log1.txt log2.txt log3.txt
将文件file1改名为file2,如果file2已经存在,则询问是否覆盖
mv -i log1.txt log2.txt
将文件file1改名为file2,即使file2存在,也是直接覆盖掉。
mv -f log3.txt log2.txt
目录的移动
mv dir1 dir2
移动当前文件夹下的所有文件到上一级目录
mv * ../
把当前目录的一个子目录里的文件移动到另一个子目录里
mv test3/*.txt test5
diff 比较文件
语法
diff(选项)(参数)
选项
-<行数>:指定要显示多少行的文本。此参数必须与-c或-u参数一并使用;
-a :diff预设只会逐行比较文本文件;
-b:不检查空格字符的不同;
-c:显示全部内容,并标出不同之处;
-H:比较大文件时,可加快速度;
-i:不检查大小写的不同;
参数
文件1:指定要比较的第一个文件;
文件2:指定要比较的第二个文件。
实例
将目录/usr/li下的文件"test.txt"与当前目录下的文件"test.txt"进行比较
diff /usr/li test.txt
ln 创建链接
类似快捷方式
ln [选项][源文件或目录][目标文件或目录]
选项
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:
ln -s log2013.log link2013
给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同
ln log2013.log ln2013
2查看文件内容
cat 显示文件内容
cat [option] [file]
如果没有指定文件,或者文件为"-",则从标准输入读取
选项:
-b 对非空输出行编号
-E 在每行结束处显示" $"
-n 对输出的所有行编号
-S 不输出多行空行
wc 统计文件字数
wc [选项] [文件]
选项:
-c: 统计字节数。
-l: 统计行数。
-w: 统计字数
-m: 统计字符数
-L: 显示最长行的长度
more 分页显示
按空白键( space )就往下一页显示,
按b键就会往回( back )一页显
more [-dlfpcsu ] [-行数 ] [+/ pattern] [+ linenum] [文件名或多文件名 ... ]
+ /pattern 在每个档案显示前搜寻该字串( pattern), 然后从该字串前两行之后开始显示
+ linenum 从第几行开始显示
-C 从顶部清屏,然后显示
-| 忽略Ctrl+I (换页)字符
-P 通过清除窗口而不是滚屏来
-S 把连续的多个空行显示为一-行
-U 把文件内容中的下画线去掉
显示文件中从第三行起的内容
more +3 /etc/profile
显示文件内容每屏显示5行
more -5 /etc/profile
显示文件内容并把连续的多个空行显示为一-行
more -S file.txt
less 分页显示
less是linux正统查看文件内容的工具
在more的时候,我们并没有办法向前面翻,只能往后面看
但less可以使用[pageup] [pagedown]等按键来往前往后翻看文件
更容易用来查看一个文件的内容!
less [选项] [文件]
选项:
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-S 显示连续空行为一-行
-S 行过长时间将超出部分舍弃
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
head 显示文件开头
一般默认显示前十行
head [选项] [文件]
选项:
-n: 指定显示头部内容行数
-c: 指定显示头部内容的字符数
-v: 总是显示文件名的头信息
-q: 不显示文件名的头信息
tail 显示文件尾部
默认显示指定文件的后十行
tail [选项] [文件]
选项:
-c: 输出文件尾部的N个字节
-n: 输出文件尾部N行内容 tail -2 text
-q: 当有多行文件参数时,不输出各个文件名
-v: 当有多个参数时,总是输出各个文件名
touch 修改文件时间
若文件不存在,系统会建立一个新的文件
touch [选项] 文件
选项
-a 改变档案的读取时间记录。
-m 改变档案的修改时间记录。
-c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
-f 不使用,是为了与其他 unix 系统的相容性而保留。
-r 使用参考档的时间记录,与 --file 的效果一样。
-d 设定时间与日期,可以使用各种不同的格式。
-t 设定档案的时间记录,格式与 date 指令相同。
由于文件不存在,建立文件
touch file
更新demo1.txt的时间戳,使其和demo2.txt的时间戳相同
touch -r demo1.txt demo2.txt
由于系统的限制,早于1970年1月1日的时间是错误的
find 寻找文件
任何位于参数之前的字符串都将被视为欲查找的目录名
如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
find 目标路径 选项 [-print -exec -ok ..
-print :将结果输出到屏幕,默认执行。
-exec :对匹配的文件执行该参数所给出的shell命令。相应命令的
形式为'command'{ }\; ,注意{ }和\; 之间的空格。
-ok :和-exec的作用相同,在执行每一个命令之前 ,会给出提示,让用户来确定是否执行。
常用选项
-name 按照文件名查找文件。
-perm 按照文件权限来查找文件。
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
-amin n 查找系统中最后N分钟访问的文件
-atime n 查找系统中最后n*24小时访问的文件
-cmin n 查找系统中最后N分钟被改变文件状态的文件
-ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n 查找系统中最后N分钟被改变文件数据的文件
-mtime n 查找系统中最后n*24小时被改变文件数据的文件
实例
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出
# find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出
# find . -ctime -20
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
# find /var/log -type f -mtime +7 -ok rm {} \;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
# find . -type f -perm 644 -exec ls -l {} \;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} \;
在/etc目录下查找大于1M的文件和目录
find /etc/ -size + 1M
在/etc目录先查找以is开头的文件
find /etc/ -name is* -type f
在当前目录下查找用户为root的文件和目录
find . -user root
在当前目录下查找所属组为root的文件和目录并显示详细信息
find . -group root -exec -Is -| {} \;
在/root目录查找10分钟之内被修改过内容的文件
find /root -mmin -10 -type f
在/root目录下查找10分钟以前属性被修改过的文件
find /root -cmin +10 -type f
locate 寻找文件
比 find 好用的文件查找工具
locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。
语法
locate [选择参数] [样式]
选项
-e 将排除在寻找的范围之外。
-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。
-q 安静模式,不会显示任何错误讯息。
-n 至多显示 n个输出。
-r 使用正规运算式 做寻找的条件。
-o 指定资料库存的名称。
-d 指定资料库的路径
实例
实例1:查找和pwd相关的所有文件
root ~ # locate pwd
/bin/pwd
/etc/.pwd.lock
/sbin/unix_chkpwd
/usr/bin/pwdx
/usr/include/pwd.h
/usr/lib/python2.7/dist-packages/twisted/python/fakepwd.py
/usr/lib/python2.7/dist-packages/twisted/python/fakepwd.pyc
/usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.py
/usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.pyc
/usr/lib/syslinux/pwd.c32
/usr/share/help/C/empathy/irc-join-pwd.page
/usr/share/help/ca/empathy/irc-join-pwd.page
/usr/share/help/cs/empathy/irc-join-pwd.page
/usr/share/help/de/empathy/irc-join-pwd.page
/usr/share/help/el/empathy/irc-join-pwd.page
实例2: 搜索etc目录下所有以sh开头的文件
root ~ # locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells
实例3:搜索etc目录下,所有以m开头的文件
root ~ # locate /etc/m
/etc/magic
/etc/magic.mime
/etc/mailcap
/etc/mailcap.order
/etc/manpath.config
/etc/mate-settings-daemon
whereis 查找二进制程序、代码等相关文件路径
和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中
语法
whereis(选项)(参数)
选项
-b:只查找二进制文件;
-B<目录>:只在设置的目录下查找二进制文件;
-f:不显示文件名前的路径名称;
-m:只查找说明文件;
-M<目录>:只在设置的目录下查找说明文件;
-s:只查找原始代码文件;
-S<目录>只在设置的目录下查找原始代码文件;
-u:查找不包含指定类型的文件。
参数
指令名:要查找的二进制程序、源文件和man手册页的指令名。
实例
将相关的文件都查找出来
[root@localhost ~]# whereis tomcat
tomcat:
[root@localhost ~]# whereis svn
svn: /usr/bin/svn /usr/local/svn /usr/share/man/man1/svn.1.gz
说明:tomcat没安装,找不出来,svn安装找出了很多相关文件
只将二进制文件查找出来
[root@localhost ~]# whereis -b svn
svn: /usr/bin/svn /usr/local/svn
[root@localhost ~]# whereis -m svn
svn: /usr/share/man/man1/svn.1.gz
[root@localhost ~]# whereis -s svn
svn:
说明:whereis -m svn查出说明文档路径,whereis -s svn找source源文件
3基本系统命令
man 帮助文档
参数:
-a:在所有的man帮助手册中搜索;
-f:等价于whatis指令,显示给定关键字的简短描述信息;
-P:指定内容时使用分页程序;
-M:指定man手册搜索的路径。
Man man
帮助文档按q退出,或者按 ctrl + z 强制结束
w 显示目前登入系统的用户信息
显示已经登陆系统的用户列表,并显示用户正在执行的指令
语法
w(选项)(参数)
选项
-h:不打印头信息;
-u:当显示当前进程和cpu时间时忽略用户名;
-s:使用短输出格式;
-f:显示用户从哪登录;
参数
用户:仅显示指定用户。
who 显示目前登录系统的用户信息
语法
who(选项)(参数)
选项
-H:显示各栏位的标题信息列;
-q:只显示登入系统的帐号名称和总人数;
-s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;
-w:显示用户的信息状态栏;
参数
文件:指定查询文件。
实例
[root@localhost ~]# who
root pts/0 2013-08-19 15:04 (192.168.0.134)
root pts/1 2013-12-20 10:37 (180.111.155.40)
[root@localhost ~]# who -q
root root
# users=2
[root@localhost ~]# who -H
NAME LINE time COMMENT
root pts/0 2013-08-19 15:04 (192.168.0.134)
root pts/1 2013-12-20 10:37 (180.111.155.40)
whoami 打印当前有效的用户名称
相当于执行id -un命令。
语法
whoami(选项)
选项
--help:在线帮助;
--version:显示版本信息。
实例
[root@localhost ~]# whoami
root
[root@localhost ~]# id -un
root
last列出目前与过去登入系统的用户相关信息
它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。
语法
last(选项)(参数)
选项
-a:把从何处登入系统的主机名称或ip地址,显示在最后一行;
-d:将IP地址转换成主机名称;
-x:显示系统关机,重新开机,以及执行等级的改变等信息。
参数
用户名:显示用户登录列表;
终端:显示从指定终端的登录列表。
date显示或设置系统时间与日期
语法
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
时间方面:
% : 印出 %
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期方面:
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
参数说明:
-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
--help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
--version : 显示版本编号
实例
显示当前时间
[root@localhost ~]# date
2020年 08月 05日 星期三 10:31:57 CST
[root@localhost ~]# date '+%c'
2020年08月05日 星期三 10时32分57秒
[root@localhost ~]# date '+%d'
05
显示月份与日数
[root@localhost ~]# date '+%B %d'
八月 05
uname 显示Linux系统信息
语法
uname(选项)
选项
-a:显示全部的信息;
-m:显示电脑类型;
-s:显示操作系统名称;
-v:显示操作系统的版本;
-i:输出硬件平台或"unknown";
实例
[root@localhost ~]# uname #单独使用uname命令时相当于uname -s
Linux
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# uname -n
localhost
[root@localhost ~]# uname -s
Linux
reboot重启Linux
语法
reboot(选项)
选项
-f:强制重新开机,不调用shutdown指令的功能;
-i:在重开机之前,先关闭所有网络界面;
-n:重开机之前不检查是否有未结束的程序;
-w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。
实例
reboot //重开机。
reboot -w //做个重开机的模拟(只有纪录并不会真的重开机)。
shutdown关机
语法
shutdown(选项)(参数)
选项
-f:重新启动时不执行fsck;
-F:重新启动时执行fsck;
-h:将系统关机;
-k:只是送出信息给所有用户,但不会实际关机;
-r:shutdown之后重新启动;
-t<秒数>:送出警告信息和删除信息之间要延迟多少秒。
立刻关机
shutdown -h now
指定5分钟后关机,同时送出警告信息给登入用户:
shutdown +5 "System will shutdown after 5 minutes"
enable启动或禁用shell内建命令
概要
enable [-a] [-dnps] [-f filename] [name ...]
选项
-a 打印所有内建命令,无论是否禁用。
-d 移除从动态库中加载的内建命令。
-s 只显示处于启动状态的posix标准内建命令。
-f 动态库中加载内建命令。
参数
filename:动态库文件名。
name(可选):内建命令,可以为多个。
返回值
enable返回成功,除非name不是内建命令或有错误发生。
例子
# 打印所有内建命令
enable -a
# 禁用一到多个内建命令
enable -n echo pwd
# 打印处于启用状态的内建命令
enable
# 打印处于禁用状态的内建命令
enable -n
# 启用一到多个内建命令
enable pwd
type显示指定命令的类型。
type [-afptP] name [name ...]
选项
-a:在环境变量PATH中查找并显示所有包含name的可执行文件路径;当'-p'选项没有同时给出时,如果在别名、关键字,函数,内建的信息中存在name,则一并显示。
-f:排除对shell函数的查找。
-p:如果name在执行'type -t name'返回的不是'file',那么什么也不返回;否则会在环境变量PATH中查找并返回可执行文件路径。
-P:即使要查找的name是别名、内建、函数中的一个,仍然会在环境变量PATH中查找并返回可执行文件路径。
-t:根据name的类型返回一个单词(别名,关键字,函数,内建,文件),否则返回空值。
参数
name:要查找的命令,可以为多个。
返回值
当指定的命令可以找到时返回成功,如果有没找到的返回失败。
4监视系统状态
top 显示或管理执行中的程序
语法
top(选项)
选项
-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。
h:显示帮助画面,给出一些简短的命令总结说明;
k:终止一个进程;
i:忽略闲置和僵死进程,这是一个开关式命令;
q:退出程序;
r:重新安排一个进程的优先级别;
S:切换到累计模式;
s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;
f或者F:从当前显示中添加或者删除项目;
o或者O:改变显示项目的顺序;
l:切换显示平均负载和启动时间信息;
m:切换显示内存信息;
t:切换显示进程和CPU状态信息;
c:切换显示命令名称和完整命令行;
M:根据驻留内存大小进行排序;
P:根据CPU使用百分比大小进行排序;
T:根据时间/累计时间进行排序;
w:将当前设置写入~/.toprc文件中。
实例
top - 09:44:56 up 16 days, 21:23, 1 user, load average: 9.59, 4.75, 1.92
Tasks: 145 total, 2 running, 143 sleeping, 0 stopped, 0 zombie
Cpu(s): 99.8%us, 0.1%sy, 0.0%ni, 0.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4147888k total, 2493092k used, 1654796k free, 158188k buffers
Swap: 5144568k total, 56k used, 5144512k free, 2013180k cached
解释:
top - 09:44:56[当前系统时间],
16 days[系统已经运行了16天],
1 user[个用户当前登录],
load average: 9.59, 4.75, 1.92[系统负载,即任务队列的平均长度]
Tasks: 145 total[总进程数],
2 running[正在运行的进程数],
143 sleeping[睡眠的进程数],
0 stopped[停止的进程数],
0 zombie[冻结进程数],
Cpu(s): 99.8%us[用户空间占用CPU百分比],
0.1%sy[内核空间占用CPU百分比],
0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比],
0.2%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比],
0.0%hi[],
0.0%st[],
Mem: 4147888k total[物理内存总量],
2493092k used[使用的物理内存总量],
1654796k free[空闲内存总量],
158188k buffers[用作内核缓存的内存量]
Swap: 5144568k total[交换区总量],
56k used[使用的交换区总量],
5144512k free[空闲交换区总量],
2013180k cached[缓冲的交换区总量],
uptime查看Linux系统负载信息
语法
uptime(选项)
选项
-V:显示指令的版本信息。
实例
使用uptime命令查看系统负载:
[root@LinServ-1 ~]# uptime
10:45:44 up 6 min, 2 users, load average: 0.04, 0.34, 0.22
显示内容说明:
10:45:44 # 系统当前时间
up 6 min # 主机已运行时间,时间越大,说明你的机器越稳定。
2 user # 用户连接数,是总连接数而不是用户数
load average: 0.04, 0.34, 0.22
# 系统平均负载,统计最近1,5,15分钟的系统平均负载
vmstat 显示虚拟内存状态
语法
vmstat(选项)(参数)
选项
-a:显示活动内页;
-f:显示启动后创建的进程总数;
-m:显示slab信息;
-n:头信息仅显示一次;
-s:以表格方式显示事件计数器和内存状态;
-d:报告磁盘状态;
-p:显示指定的硬盘分区状态;
-S:输出信息的单位。
参数
事件间隔:状态信息刷新的时间间隔;
次数:显示报告的次数。
实例
vmstat 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 320 42188 167332 1534368 0 0 4 7 1 0 0 0 99 0 0
0 0 320 42188 167332 1534392 0 0 0 0 1002 39 0 0 100 0 0
0 0 320 42188 167336 1534392 0 0 0 19 1002 44 0 0 100 0 0
0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0
0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0
ps 报告当前系统的进程状态
语法
ps(选项)
选项
-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
a:显示现行终端机下的所有程序,包括其他用户的程序。
-A:显示所有程序。
-H:显示树状结构,表示程序间的相互关系
-N:显示所有的程序,除了执行ps指令终端机下的程序之外。
r:只列出现行终端机正在执行中的程序。
s:采用程序信号的格式显示程序状况。
S:列出程序时,包括已中断的子程序资料。
-T:显示现行终端机下的所有程序。
u:以用户为主的格式来显示程序状况。
x:显示所有程序,不以终端机来区分。
实例
ps axo pid,comm,pcpu # 查看进程的PID、名称以及CPU 占用率
ps aux | sort -rnk 4 # 按内存资源的使用量对进程进行排序
ps aux | sort -nk 3 # 按 CPU 资源的使用量对进程进行排序
ps -A # 显示所有进程信息
ps -u root # 显示指定用户信息
ps -aux > ps001.txt
kill 发送信号到进程。
kill [-s sigspec | -n signum | -sigspec] pid | jobspec ...
kill -l [sigspec]
主要用途
发送信号到作业或进程(可以为多个)。
选项
-s sig 信号名称。
-n sig 信号名称对应的数字。
-l 列出信号名称。如果在该选项后提供了数字那么假设它是信号名称对应的数字。
参数
pid:进程ID
jobspec:作业标识符
返回值
返回状态为成功除非给出了非法选项、执行出现错误。
例子
[user2@pc] kill -l 9
KILL
# 列出所有信号名称:
[user2@pc] kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP …………
# 下面是常用的信号。
# 只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。
HUP 1 终端挂断
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
KILL 9 强制终止
TERM 15 终止
CONT 18 继续(与STOP相反,fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
5磁盘操作
df 检查磁盘空间占用情况
df [选项] [文件]
选项:
-a:包含全部的文件系统
-h:以可读性较高的方式来显示信息
-I (i的大写) 显示inode的信息
-k 指定区块大小为1024字节
-l 仅显示本地端的文件系统
-T 显示文件系统的类型
列出各文件系统的i节点使用情况。
df -i
列出文件系统的类型
df -T
以k为单位显示磁盘的使用情况
df –k
du 计算文件或目录所占的磁盘空间
du [选项] [文件]
选项:
-a 显示目录中个别文件的大小。
-c 显示几个目录或文件的大小,并统计它们的总和
-m 以MB为单位输出。
-S 仅显示总计,只列出最后加总的值。
-h 以K,M,G为单位,提高信息的可读性。
显示多个文件所占用的空间
du file file2 file3
显示多个文件所占用的空间,并显示们所占用的空间总和
du -C file file2 file3
显示一个目录及其每个子目录的磁盘使用情况
du /home
mount 挂载Linux系统外的文件
语法
mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
选项
-V:显示程序版本
-h:显示辅助讯息
-v:显示较讯息,通常和 -f 用来除错。
-a:将 /etc/fstab 中定义的所有档案系统挂上。
-o ro:只读模式挂上。
-o rw:用可读写模式挂上。
实例
将 /dev/hda1 挂在 /mnt 之下。
#mount /dev/hda1 /mnt
将 /dev/hda1 用只读模式挂在 /mnt 之下。
#mount -o ro /dev/hda1 /mnt
fdisk 查看磁盘使用情况和磁盘分区
语法
fdisk(选项)(参数)
选项
-b <大小> 扇区大小(512、1024、2048或4096)
-C <数字> 指定柱面数
-H <数字> 指定磁头数
-S <数字> 指定每个磁道的扇区数
参数
m 显示所有命令列示
p 显示硬盘分割情形。
a 设定硬盘启动区。
n 设定新的硬盘分割区。
e 硬盘为延伸]分割区(extend)。
p 硬盘为[主要]分割区(primary)。
t 改变硬盘分割区属性。
q 结束不存入硬盘分割区属性。
w 结束并写入硬盘分割区属性
以sda2为例新建分区
fdisk /dev/sda2
新建主分区
n 设定新的硬盘分割区。
p 硬盘为[主要]分割区(primary)。
6用户和组相关
su 切换账户
su(选项)(参数)
选项
-c<指令>:执行完指定的指令后,即恢复原来的身份;
-m,-p变更身份时,不要变更环境变量;
-s<shell>:指定要执行的shell;
实例
变更帐号为test并在执行pwd指令后退出变回原使用者:
变更帐号为test并改变工作目录至test的家目录:
useradd 创建新用户
语法
useradd(选项)(参数)
选项
-d<登入目录>:指定用户登入时的启始目录;
-e<有效期限>:指定帐号的有效期限;
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;
-G<群组>:指定用户所属的附加群组;
-r:建立系统帐号;
-s<shell>:指定用户登入后所使用的shell;
-u<uid>:指定用户id。
参数
用户名:要创建的用户名。
实例
新建用户加入组:
useradd –g sales jack –G company,employees
建立一个新用户账户,并设置ID:
useradd caojh -u 544
passwd 更改密码
语法
passwd(选项)(参数)
选项
-d:删除密码,仅有系统管理者才能使用;
-f:强制执行;
-k:设置只有在密码过期失效后,方能更新;
-l:锁住密码;
-s:列出密码的相关信息,仅有系统管理者才能使用;
-u:解开已上锁的帐号。
参数
用户名:需要设置密码的用户名。
存放用户信息的文件
/etc/passwd
/etc/shadow
存放组信息的文件
/etc/group
/etc/gshadow
实例
[root@localhost ~]# passwd linuxde # 更改或创建linuxde用户的密码;
Changing password for user linuxde.
New UNIX password: # 请输入新密码;
Retype new UNIX password: # 再输入一次;
passwd: all authentication tokens updated successfully. # 成功;
groupadd 创建新工作组
语法
groupadd(选项)(参数)
选项
-g:指定新建工作组的id;
-r:创建系统工作组,系统工作组的组ID小于500;
-K:覆盖配置文件“/ect/login.defs”;
-o:允许添加组ID号不唯一的工作组。
参数
组名:指定新建工作组的组名。
实例
建立一个新组,并设置组ID加入系统:
groupadd -g 344 jsdigname
此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。
userdel 删除用户
语法
userdel(选项)(参数)
选项
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
参数
用户名:要删除的用户名。
实例
userdel命令很简单,比如我们现在有个用户linuxde,其家目录位于/var目录中,现在我们来删除这个用户:
userdel linuxde # 删除用户linuxde,但不删除其家目录及文件;
userdel -r linuxde # 删除用户linuxde,其家目录及文件一并删除;
请不要轻易用-r选项;他会删除用户的同时删除用户所有的文件和目录,切记如果用户目录下有重要的文件,在删除前请备份。
chown 变更文件或目录的拥有者或所属群组
只有文件主和超级用户才可以便用该命令。
语法
chown(选项)(参数)
选项
-c:效果类似“-v”参数,但仅回报更改的部分;
-f:不显示错误信息;
-h:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R:递归处理,将指定目录下的所有文件及子目录一并处理;
-v:显示指令执行过程;
参数
用户:组:指定所有者和所属工作组。当省略“:组”,仅改变文件所有者;
文件:指定要改变所有者和工作组的文件列表。
实例
将目录/usr/meng及其下面的所有文件、子目录的文件主改成 liu:
chown -R liu /usr/meng
chmod 变更文件或目录的权限
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
参数
mode:八进制数或符号组合。
file:指定要更改权限的一到多个文件。
选项
-c:当文件的权限更改时输出操作信息。
-f:抑制多数错误消息的输出。
-v:无论文件是否更改了权限,一律输出操作信息。
-R:对目录以及目录下的文件递归执行更改权限操作。
返回值
返回状态为成功除非给出了非法选项或非法参数。
例子
# 查看当前目录(包含隐藏文件)的长格式。
ls -la
-rw-r--r-- 1 user staff 651 Oct 12 12:53 .gitmodules
# 第1位如果是d则代表目录,是-则代表普通文件。
# 更多详情请参阅info coreutils 'ls invocation'(ls命令的info文档)的'-l'选项部分。
# 第2到4位代表当前用户的权限。
# 第5到7位代表组用户的权限。
# 第8到10位代表其他用户的权限。
# 添加组用户的写权限。
chmod g+w ./test.log
# 删除其他用户的所有权限。
chmod o= ./test.log
# 使得所有用户都没有写权限。
chmod a-w ./test.log
# 当前用户具有所有权限,组用户有读写权限,其他用户只有读权限。
chmod u=rwx, g=rw, o=r ./test.log
# 等价的八进制数表示:
chmod 754 ./test.log
# 将目录以及目录下的文件都设置为所有用户拥有读写权限。
# 注意,使用'-R'选项一定要保留当前用户的执行和读取权限,否则会报错!
chmod -R a=rw ./testdir/
# 根据其他文件的权限设置文件权限。
chmod --reference=./1.log ./test.log
id显示用户的ID以及所属群组的ID
语法
id [-gGnru]--[help][--version][用户名称]
选项
-g或--group 显示用户所属群组的ID。
-G或--groups 显示用户所属附加群组的ID。
-n或--name 显示用户,所属群组或附加群组的名称。
-r或--real 显示实际ID。
-u或--user 显示用户ID。
实例
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
解释:用户root的UID号码 = 0,GID号码 = 0。用户root是下面组的成员:
root组GID号是:0
bin组GID号是:1
daemon组GID号是:2
sys组GID号是:3
adm组GID号是:4
disk组GID号是:6
wheel组GID号是:10
打印用户名、UID 和该用户所属的所有组,要这么做,我们可以使用 -a 选项:
[root@localhost ~]# id -a
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
finger 查找并显示用户信息
语法
finger(选项)(参数)
选项
-m:排除查找用户的真实姓名;
-s:列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话;
-p:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容。
不指定finger的选项如果提供操作者的话,缺省设为-l输出风格,否则为-s风格,注意在两种格式中,如果信息不足,都有一些域可能丢失,如果没有指定参数finger会为当前登录的每个用户打印一个条目。
参数
用户名:指定要查询信息的用户。
实例
[root@localhost root]# finger
login Name Tty Idle Login time Office Office Phone
root root tty1 2 Dec 18 13
root root pts/0 1 Dec 18 13
root root *pts/1 Dec 18 13
如果要查询远程机上的用户信息,需要在用户名后面接@主机名,采用用户名@主机名的格式,不过要查询的网络主机需要运行finger守护进程的支持。
7压缩
gzip 压缩和解压文件
gzip [选项] 文件
选项:
-d 将压缩文件解压。
-r 递归处理,将指定目录下的所有文件及子目录一并处理;
-t 验证压缩文件的完整性。如果文件完整则不显示任何信息
-v 显示执行过程
把当前目录下的每个文件压缩成.gz文件。
gzip
解压file.gz,并列出详细的信息
gzip -dv file.gz
检验file.gz的完整性。
gzip -t file.gz
bzip2解压缩
bzip2采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法好
若没有加上任何参数,bzip2压缩完文件后会产生bz2的压缩文件,并删除原始的文件。
bzip2 [选项] 文件
选项:
-d 解压缩。
-k 产生压缩文件后保留原文件
-t 测试.bz2压缩文件的完整性。
-v 压缩或解压缩文件时,显示详细的信息。
-z 强制执行压缩。
用bizp2压缩install.log并保存原文件。
bzip2 -k install.log
解压install.log.bz2 ,并保留原文件
bzip2 -kd install.log
检验install.log.bz2的完整性。
bzip2 -t file.gz
tar打包
tar命令可以为linux的文件和目录创建档案。
利用tar命令,可以把一大堆的文件和目录全部打包成一个文件
tar 选项 归档/压缩文件 [文件或目录列表]
选项:
-c 创建归档/压缩文件包。
-f 指定一个文件名,是必须的选项
-x 还原归档/压缩文件中的文件或目录。
-v 显示命令的执行过程。
-z 采用gzip格式压缩/解压缩文件。
-j 采用bzip2格式压缩/解压缩文件。
仅打包不压缩。
tar -cvf install.tar install.log
打包后压缩成bzip2格式的压缩包。
tar -jcvf install.tar.bz2 install.log
将install.tar.bz2中的文件解压到/root目录。
tar -zxvf install.tar.bz2 /root
8 网络ip相关
ifconfig 配置和显示Linux系统网卡的网络参数
ifconfig(参数)
参数
add<地址>:设置网络设备的ip地址;
del<地址>:删除网络设备的IP地址;
down:关闭指定的网络设备;
up:启动指定的网络设备;
netmask<子网掩码>:设置网络设备的子网掩码;
-a 显示所有配置的网络接口,不论其是否激活
实例
显示网络设备信息(激活状态的):
说明:
lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。
启动关闭指定网卡:
ifconfig eth0 up
ifconfig eth0 down
ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。
为网卡配置和删除IPv6地址:
ifconfig eth0 add 33ffe:3240:800:1005::2/64 #为网卡eth0配置IPv6地址
ifconfig eth0 del 33ffe:3240:800:1005::2/64 #为网卡eth0删除IPv6地址
配置IP地址:
[root@localhost ~]# ifconfig eth0 192.168.2.10
[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0
route显示并设置Linux中静态路由表
route(选项)(参数)
选项
-A:设置地址类型;
-C:打印将Linux核心的路由缓存;
-v:详细信息模式;
-n:不执行DNS反向查找,直接显示数字形式的IP地址;
-net:到一个网络的路由表;
-host:到一个主机的路由表。
参数
Add:增加指定的路由记录;
Del:删除指定的路由记录;
Target:目的网络或目的主机;
gw:设置默认网关;
dev:路由记录所表示的网络接口。
实例
显示当前路由:
添加网关/设置网关:
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 #增加一条到达244.0.0.0的路由。
屏蔽一条路由:
route add -net 224.0.0.0 netmask 240.0.0.0 reject #增加一条屏蔽的路由,目的地址为224.x.x.x将被拒绝。
删除路由记录:
route del -net 224.0.0.0 netmask 240.0.0.0
route del -net 224.0.0.0 netmask 240.0.0.0 reject
删除和添加设置默认网关:
route del default gw 192.168.120.240
route add default gw 192.168.120.240
ping 测网络连通性
语法
ping(选项)(参数)
选项
-d:使用Socket的SO_DEBUG功能;
-c<完成次数>:设置完成要求回应的次数;
-f:极限检测;
-i<间隔秒数>:指定收发信息的间隔时间;
-n:只输出数值;
-q:不显示指令执行过程,开头和结尾的相关信息除外;
-R:记录路由过程;
-s<数据包大小>:设置数据包的大小;
-t<存活数值>:设置存活数值TTL的大小;
-v:详细显示指令的执行过程
。
参数
目的主机:指定发送ICMP报文的目的主机。
实例
[root@AY1307311912260196fcZ ~]# ping www.jsdig.com
PING host.1.jsdig.com (100.42.212.8) 56(84) bytes of data.
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=1 ttl=50 time=177 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=2 ttl=50 time=178 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=3 ttl=50 time=174 ms
64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=4 ttl=50 time=177 ms
...按Ctrl+C结束
9 shell
echo $SHELL 显示当前使用的shell
开机默认为bash
bash 进入shell()
exit 退出shell
参考