目录
linux 常用扩展命令
1.Linux命令的分类
2.用户和组账户管理User Group
3.文件权限
4.find命令
5.grep命令 搜索文件中匹配符
6.top 查看系统健康状态
7.进程命令
8.时间命令
9.中文语言环境
10.mail
11.系统中7种运行级别
内部命令:
属于Shell解析器的一部分,也称为内建(Built-IN)指令。
内部命令属于Shell的一部分,所以并没有单独对应的系统文件,只要Shell解释器被运行,内部指令也就自动载入内存了,用户可以直接使用。
内部命令无需从硬盘中重新读取文件,因此执行效率更高。
内部命令找不到命令所在路径。
cd 切换目录
pwd 显示当前工作目录
help 帮助
外部命令:
指的是Linux系统中能够完成特定功能的脚本文件或二进制程序,每个外部命令对应了系统中的一个文件,是独立于Shell解析器之外的文件程序。
Linux系统必须知道外部命令对应的文件位置,才能够由Shell加载并执行。
可简单理解为,系统读取环境变量文件,去找Path路径,然后加载进内存中。
ls 显示文件和目录列表
mkdir 创建目录
cp 复制文件或目录(copy)
查看帮助文档
内部命令:help + 命令(help cd)
外部命令:man + 命令(man ls)
type命令
用来区分指定命令是由shell自带的,还是由shell外部的独立二进制文件提供的
$ type cd
系统会提示,cd是shell的自带命令(build-in)。
$ type grep
系统会提示,grep是一个外部命令,并显示该命令的路径。
Linux系统默认会将存放外部命令、程序的目录(如/bin、/usr/bin、/usr/local/bin等)添加到用户的“搜索路径”中,
当使用位于这些目录中的外部命令时,用户不需要指定具体的位置。
因此:不用刻意去分辨内部、外部命令,其使用方法是基本类似的。
用户管理简介
linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。
系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。
对安全要求高的服务器,都需要建立合理的用户权限等级制度和服务器操作规范。
在linux中主要是通过用户配置文件来查看和修改用户信息。
配置文件
•保存用户信息的文件:/etc/passwd
•保存密码的文件:/etc/shadow
•保存用户组的文件:/etc/group
•保存用户组密码的文件:/etc/gshadow
/etc/passwd格式
共7个字段,示例数据为:
root:x:0:0:root:/root:/bin/bash
用户名:密码位:UID(用户标识号):GID(缺省组标识号):描述信息:宿主目录:命令解释器(使用的 shell,默认为bash)
使用命令:man 5 passwd
用户名:用户登陆系统的用户名
密码:密码位
UID:用户标识号
GID:默认组ID
描述信息:存放用户的描述信息
宿主目录: 用户登陆系统的默认目录,普通用户默认是在/home/下
命令解析器: 用户使用的Shell,默认是bash
Linux用户分类
超级用户:(root,UID=0)
普通用户:(UID在500到60000)
伪用户:(UID在1到499)
伪用户:
1、伪用户与系统和程序服务相关
bin、daemon、shutdown、halt等,任何Linux系统默认都有这些伪用户
mail、news、games、apache、ftp、mysql及sshd等,与Linux 系统的进程相关
2、伪用户通常不需要或无法登录系统
3、可以没有宿主目录
用户组
每个用户至少属于一个用户组
每个用户组可以包含多个用户
同一个用户组的用户享有该组共有的权限
初始组和附加组
初始组:就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。
初始组有且仅有一个,可以修改,但不建议修改。
附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。
/etc/shadow格式
共9个字段,示例数据为:
root:$1$FAKb8T5g$3ni9CM7RlbrwWpDGfWP0:15439:0:99999:7:::
用户名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:密码过期后宽限天数:失效时间:标志(保留字段)
查看命令:man 5 shadow
用户名: 登陆系统的用户名
加密密码:如果密码位是!!或者*代表没有密码,不能登录
(忘记密码,可在shadow下删除加密密码,不需密码就能登录,然后修改密码)
最后一次修改时间:用户最后一次修改密码的天数,是从1970年1月1日开始计算的天数
最小时间间隔:两次修改密码之间的最小天数
最大时间间隔:密码保持有效的最多天数
警告时间:从系统开始警告到密码失效的天数
密码过期后宽限天数:0表示密码过期后立即失效,-1表示密码永远不会失效
失效时间:密码失效的绝对天数(不用管有效期)
标志:保留字段
操作用户命令
添加用户命令:useradd
语法:useradd [选项] 用户名
-u 指定组ID(uid)
-g 指定所属的组名(gid)
-G 指定多个组,用逗号“,”分开(Groups)
-c 用户描述(comment)
例子:
useradd -u 888 -G sys,root -c "nvshen" yifei
passwd yifei
用户密码:生产环境中,用户密码长度8位以上,设置大小写加数字加特殊字符,要定期更换密码。
ys^h_L9t
修改密码命令 passwd
语法:passwd [选项] [用户名]
选项:
-S 查询用户密码的密码状态。仅root用户可用 (即查看某一个用户的shadow记录)
修改用户命令:usermod(user modify)
-g 添加组 usermod -g sys tom 指定组必须存在
-G 修改用户附加组 usermod -G sys,root tom
删除用户命令:userdel(user delete)
-r 删除账号时同时删除目录(remove)
删除用户时,默认删除同名的组。
如果用户所属组,被其他用户依赖,或者该用户使用了非同名组,则不删除该组,只删除该用户。
id命令
作用:查看指定用户的id和组id情况
语法:id 用户名
eg:
/etc/group格式
共4个字段,数据格式为:
root:x:0:root
sys:x:3:root,bin,adm
组名:组密码位:GID:组成员(组内所有用户列表)
组名:用户所在的组
组密码:密码位,一般不使用
GID:主标示号
组内用户列表: 属于该组的用户列表
/etc/gshadow 文件格式
共4个字段,数据格式为:
root:::
bin:::bin,daemon
组名:组密码:组管理员用户名:组中附加用户
操作用户组命令
添加组:groupadd
-g 指定gid
修改组:groupmod
-n 更改组名(new group)
groupmod -n new_gname old_gname
删除组:groupdel
如果要删除的组归属于某一个用户的所属组,则不能删除该组
# useradd -g hadoop hdfs
# groupdel hadoop
groups
显示用户所属组
文件权限查看命令:
ls -l xxx.xxx (xxx.xxx是文件名)查看xxx文件的文件权限
ls -l xxx 文件夹 查看文件夹下所有文件的权限
ls -l 可简写成 ll
示例:
drwxr-xr-x. 2 root root 45 Mar 29 07:47 input
-rw-r--r--. 1 root root 82586729 May 5 20:35 SparkTest-1.0-SNAPSHOT.jar
文件权限 链接数 所属用户 所属用户组 文件大小 文件最后修改时间 文件名
文件权限解释:
- rw- r-- r--
【文件是-,文件夹是d】【owner权限】【group权限】【other权限】
权限类型:
r 读权限read 4
w 写权限write 2
x 操作权限execute 1
修改权限命令
chmod o+w xxx.xxx 表示给其他人授予写xxx.xxx这个文件写的权限
chmod go-rw xxx.xxx 表示删除xxx.xxx中组群和其他人的读和写的权限
chmod 764 xxx.xxx 修改文件权限为 owner 读写执行 group 读写 other读
其中:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
其中:rwx也可以用数字来代替
r ------------4
w -----------2
x ------------1
- ------------0
行动:
+ 表示添加权限
- 表示删除权限
= 表示使之成为唯一的权限
修改文件夹权限:
chmod 权限 /文件夹 只修改文件夹的权限
chmod -R 权限 /文件夹 递归修改文件夹内所有文件的权限
chmod u+x file 给file的属主增加执行权限
chmod 751 file 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod u=rwx,g=rx,o=x file 上例的另一种形式
chmod =r file 为所有用户分配读权限
chmod 444 file 同上例
chmod a-wx,a+r file 同上例
chmod -R u+r directory 递归地给directory目录下所有文件和子目录的属主分配读的权限
chmod 4755 设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。
还可设置第四位,它位于三位权限序列的前面,第四位数字取值是4,2,1,代表意思如下:
4,执行时设置用户ID,用于授权给基于文件属主的进程,而不是给创建此进程的用户。
2,执行时设置用户组ID,用于授权给基于文件所在组的进程,而不是基于创建此进程的用户。
1,设置粘着位。
chown:改变文件属主
chown user 文件 变更/设置文件/目录的所有者
chown user:group 文件 变更/设置文件/目录的所有者/组
chown :group 文件 变更/设置文件/目录的组
find 查找文件或目录 find [搜索路径] [搜索关键字]
find pathname -options [-print -exec -ok]
pathname find命令所查找的目录路径。例如用 .来表示当前目录,用 /来表示系统根目录。
-print find命令将匹配的文件输出到标准输出。
-exec find 命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为 ' command' {} \;,注意{ }和\;之间的空格。
-ok 和- exec 的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,
在执行每一个命令之前,都会给出提示,让用户来确定是否执行
find命令选项
-name 按名称查找
eg:find /etc -name init 在目录/etc中查找文件init
-iname 类似-name,不区分大小写
eg:
find /etc/ -name passwd.old
find /etc/ -iname passwd.old
/etc/passwd.OLD
-size 按文件大小查找
以block为单位,一个block是512B +大于 -小于 不写是等于
eg:find /etc -size +204800 在etc目录下找出大于100MB的文件
100MB=102400KB=204800block
-user 按宿主用户查找
eg:find / -user sam 在根目录下查找所有者为sam的文件
-perm 按权限查找
-type 按文件类型查找
f 二进制文件 l 软连接文件 d 目录 b 块设备文件 c 字符设备文件 p 管道文件
eg: find /dev -type c
-inum 根据i节点查找
适用场景:1,文件名怪异,比如文件名有空格,那么就使用 ls -i 查找出该文件的i节点(此处为当前目录下),再使用 find . -inum 文件i节点 -exec rm {} \; 删除文件
2,根据i节点查找文件的硬链接
-group按文件所属组查找
-nogroup 查找无有效所属组的文件,即该文件所属的组在 /etc/groups中不存在
-nouser 查找无有效属主的文件,即该文件的属主在/etc/password中不存在
-newer file1 ! file2 查找更改时间比文件 file1新但比文件 file2旧的文件
-size n[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
-fstype 查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件 /etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息
-mount 在查找文件时不跨越文件系统mount点
-follow 如果find命令遇到符号链接文件,就跟踪至链接所指向的文件
-cpio 对匹配的文件使用 cpio命令,将这些文件备份到磁带设备中
- prune 忽略某目录 如果-prune和-depth同时使用了,那么find命令就忽略-prune选项。
eg:$ find /apps -name "/apps/bin" -prune -o -print 在 /apps目录下查找文件,但忽略 /apps/bin 目录
-mtime -n +n
按最后一次修改时间查找,选取n天内被修改的文件
- n表示文件更改时间距现在 n天以内,+ n 表示文件更改时间距现在 n天以前
-atime 按最后一次访问时间查找
按时间查找:
1,天 ctime,atime,mtime
2,分钟 cmin,amin,mmin
c-change改变 表示文件属性被修改过,所有者,所属组,权限
a-access访问 cat,more,vi编辑过
m-modify修改 表示文件内容被修改过
- 多长时间之内,+超过多长时间
eg: find /etc -cmin -5 在/etc 下查找5分钟内被修改过属性的文件和目录
find查找中的字符匹配:
*:匹配所有,?:匹配单个字符
eg:find /etc -name init??? 在目录/etc中查找以init开头的,且后面有三位的文件
find查找的基本原则:占用最少的系统资源
连接符:
-a and 逻辑与
-o or 逻辑或
exec 用法:find .... -exec 命令 {} \;
ok 用法:与exec相似,但是会询问是否删除
解释:{} 花括号是find查询的结果
\ 转义符,符号命令使用本身
; 结果
-exec/-ok 对查找结果要执行的命令 {} \;
eg:find /etc -ctime -1
在etc下查找24小时内被修改过属性的文件和目录
eg:find /etc -size +163840 -a -size -204800
在etc下查找大于80MB小于100MB的文件
eg: find /etc -name initab -exec ls -l {} \;
在/etc下查找initab文件并显示其详细信息
eg: find /home -user union -exec rm -rf {} \;
查找/home 目录下,所属者为union的文件,并直接删除
grep 在文件中搜寻字串匹配的行并输出 eg:grep ftp /etc/services
grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :输出匹配行的次数(是以行为单位,不是以出现次数为单位)
-i :忽略大小写,所以大小写视为相同
-n :显示匹配行及行号
-v :反向选择,显示不包含匹配文本的所有行。
-h : 查询多文件时不显示文件名。
-s : 不显示不存在或无匹配文本的错误信息。
--color=auto :可以将找到的关键词部分加上颜色的显示
eg: 查看文件时去掉#号。
hostname#grep -v "#" /etc/samba/smb.conf
hostname#grep -v "#" /etc/samba/smb.conf | grep -v ";"
eg:ls -l /etc/ | grep '^d' | tee result.txt | wc -l 查看/etc下的以字符d开头的文件数量,并将文件详情输入到result.txt中
eg:#grep -v ^# /etc/inittab 去掉文件行首的#号
eg:# netstat -an | grep ESTABLISHED 查看当前机器的远程连接
grep -n “48” test.txt 显示行号;显示匹配字符“48”的行及行号,相同于 nl test.txt |grep 48)
grep “471” test.txt 显示输出字符“471”所在的行)
grep “48;” test.txt 显示输出以字符“48”开头,并在字符“48”后是一个tab键所在的行
grep “48[34]” test.txt 显示输出以字符“48”开头,第三个字符是“3”或是“4”的所有的行)
grep “^[^48]” test.txt 显示输出行首不是字符“48”的行)
grep “[Mm]ay” test.txt 设置大小写查找:显示输出第一个字符以“M”或“m”开头,以字符“ay”结束的行)
grep “K…D” test.txt 显示输出第一个字符是“K”,第二、三、四是任意字符,第五个字符是“D”所在的行)
grep “[A-Z][9]D” test.txt 显示输出第一个字符的范围是“A-D”,第二个字符是“9”,第三个字符的是“D”的所有的行
grep “[35]..1998” test.txt 显示第一个字符是3或5,第二三个字符是任意,以1998结尾的所有行
grep “4/{2,/}” test.txt 模式出现几率查找:显示输出字符“4”至少重复出现两次的所有行
grep “9/{3,/}” test.txt 模式出现几率查找:显示输出字符“9”至少重复出现三次的所有行
grep “9/{2,3/}” test.txt 模式出现几率查找:显示输出字符“9”重复出现的次数在一定范围内,重复出现2次或3次所有行
grep -n “^$” test.txt 显示输出空行的行号
ls -l |grep “^d” 如果要查询目录列表中的目录 同:ls -d *
ls -l |grep “^d[d]” 在一个目录中查询不包含目录的所有文件
ls -l |grpe “^d.....x..x” 查询其他用户和用户组成员有可执行权限的目录集合
扩展grep(grep -E 或者 egrep):
使用扩展grep的主要好处是增加了额外的正则表达式元字符集。
打印所有包含NW或EA的行。如果不是使用egrep,而是grep,将不会有结果查出。
# egrep 'NW|EA' testfile
northwest NW Charles Main 3.0 .98334
eastern EA TB Savage 4.4 .84520
对于标准grep,如果在扩展元字符前面加\,grep会自动启用扩展选项-E。
#grep 'NW\|EA' testfile
northwest NW Charles Main 3.0 .98334
eastern EA TB Savage 4.4 .84520
搜索所有包含一个或多个3的行。
# egrep'3+' testfile
# grep -E '3+' testfile
# grep'3\+' testfile
#这3条命令将会
northwest NW Charles Main 3.0 .98334
western WE Sharon Gray 5.3 .97523
northeast NE AM Main Jr. 5.1 .94313
central CT Ann Stephens 5.7 .94513
搜索所有包含0个或1个小数点字符的行。
# egrep'2\.?[0-9]' testfile
# grep -E '2\.?[0-9]' testfile
# grep'2\.\?[0-9]' testfile
#首先含有2字符,其后紧跟着0个或1个点,后面再是0和9之间的数字。
western WE Sharon Gray 5.3 .97523
southwest SW Lewis Dalsass 2.7 .8218
eastern EA TB Savage 4.4 .84520
搜索一个或者多个连续的no的行。
# egrep'(no)+' testfile
# grep -E '(no)+' testfile
# grep'\(no\)\+' testfile #3个命令返回相同结果,
northwest NW Charles Main 3.0 .98334
northeast NE AM Main Jr. 5.1 .94313
north NO Margot Weber 4.5 .8959
不使用正则表达式
fgrep 查询速度比grep命令快,但是不够灵活:它只能找固定的文本,而不是规则表达式。
如果你想在一个文件或者输出中找到包含星号字符的行
fgrep '*' /etc/profile
for i in /etc/profile.d/*.sh ; do
或
grep -F '*' /etc/profile
for i in /etc/profile.d/*.sh ; do
top 进程活动
top提供一个当前运行系统实时动态的视图,包括内存、交换分区和CPU的使用率等。
默认情况下,显示系统中CPU使用率最高的任务,并每3秒钟刷新一次。
【参数说明】
top -d Number 制定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变。
top -p ID 通过制定监控进程ID来仅仅监控某个进程的状态
top -s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
top -i 使top不显示任何闲置或者僵死进程。
top -c 显示整个命令行而不是显示命令名
【交互命令】
Ctrl+L 擦除并重写屏幕
h后者? 显示帮助画面,给出一些简短的命令总结说明。
Kill -15(-9)PID 终止一个进程。
系统将提示用户输入需要终止的进程PID,以及需要发送该进程什么样的信号。
一般的终止进程可使用15信号,如不能结束那就是用信号9强制结束该进程。
i 忽略闲置和僵死进程。
q 退出程序
r 重新安排一个进程的优先级别,输入需要改变的PID机优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认是10.
s 改变两次刷新之间的延迟时间。输入时间值S。小数算成ms。输入0值系统将不断刷新从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f/F 从当前显示中添加/删除项目,按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。前面标记“*”的项代表现实,不带则代表隐藏。
o/O 改变显示项目的顺序,按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
l 切换显示平均负载和启动时间信息
m 切换显示内存信息
t 切换显示进程和cpu状态信息。
c 切换显示项目命令名称和完整命令行
M 根据驻留内存大小进行排序(降序)
P 根据cpu使用百分比大小进行排序
T 根据时间/累计时间进行排序
W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
输出样例分析:
$ top
top - 19:54:51 up 331 days, 3:04, 4 users, load average: 0.59, 0.38, 0.29
Tasks: 344 total, 1 running, 343 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 1.0%sy, 0.0%ni, 98.8%id, 0.0%wa, 0.1%hi, 0.0%si, 0.0%st
Mem: 8174256k total, 7004368k used, 1169888k free, 840524k buffers
Swap: 5242872k total, 357676k used, 4885196k free, 2577344k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3653 root 16 0 10228 768 688 S 3.3 0.0 7577:01 hald-addon-stor
22183 unionmon 15 0 12872 1284 804 R 1.0 0.0 0:00.05 top
1 root 15 0 10348 588 556 S 0.0 0.0 35:34.11 init
2 root RT -5 0 0 0 S 0.0 0.0 1:56.33 migration/0
统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
Tasks: 344 total 进程总数
1 running 正在运行的进程数
343 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 0.1% us 用户空间占用CPU百分比
1.0% sy 内核空间(系统模式)占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.8% id 空闲CPU百分比
0.0% wa 等待输入输出的进程占用CPU时间百分比
0.1% hi 硬中断请求服务占用的CPU百分百
0.0% si 软中断请求服务占用的CPU百分百
0.0% st st(Steal time)虚拟时间百分比,就是当有虚拟机时,虚拟cpu等待实际cpu的时间百分百。
第四行为物理内存信息,第五行为交换分区(swap)信息。内容如下:
Mem: 8174256k total 物理内存总量,单位KB
7004368k used 已经使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量
Swap: 192772k total 交换区总量
357676k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
进程信息区统计信息区域的下方显示了各个进程的详细信息。
序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程所有者的用户id
e USER 进程所有者的用户名
f GROUP 进程所有者的组名
g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
h PR 优先级
i NI nice值。负值表示高优先级,正值表示低优先级
j P 最后使用的CPU,仅在多CPU环境下有意义
k %CPU 上次更新到现在的CPU时间占用百分比
l TIME 进程使用的CPU时间总计,单位秒
m TIME+ 进程使用的CPU时间总计,单位1/100秒
n %MEM 进程使用的物理内存百分比
o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r CODE 可执行代码占用的物理内存大小,单位kb
s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t SHR 共享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一次写入到现在,被修改过的页面数。
w S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 任务标志,参考 sched.h
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。
更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
进程和程序的区别:
1、程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。
2、程序和进程无一一对应关系。一个程序可以由多个进程共用;另一方面,一个进程在活动中有可顺序地执行若干个程序。
父进程与子进程:
1、子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程。
2、在Linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。
3、父进程终止子进程自然终止。
进程和线程的区别:
进程: 就是正在执行的程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
线程: 轻量级的进程;进程有独立的地址空间,线程没有;线程不能独立存在,它由进程创建;相对讲,线程耗费的cpu和内存要小于进程。
前台进程和后台进程:
前台进程:
在Shell提示处打入命令后,创建一个子进程,运行命令,Shell等待命令退出,然后返回到对用户给出提示符。
这条命令与Shell异步运行,即在前台运行,用户在它完成之前不能执行另一个命令。
后台进程:
在Shell提示处打入命令,若后随一个&,Shell创建的子进程运行此命令,但不等待命令退出,而直接返回到对
用户给出提示。这条命令与Shell同步运行,即在后台运行。后台进程必须是非交互式的。
进程状态:
就绪:进程已经分配到资源,但因为其它进程正占用CPU,所以暂时不能运行而等待分配CPU的状态。
等待:因等待某种事件而暂时不能运行的状态。
运行:进程分配到CPU,正在处理器上运行。
进程状态细化:
用户态运行:在CPU上执行用户代码
核心态运行:在CPU上执行核心代码
在内存就绪:具备运行条件,只等调度程序为它分配CPU
在内存睡眠:因等待某一事件的发生,而在内存中排队等待
在外存就绪:就绪进程被交换到外存上继续处于就绪状态
在外存睡眠:睡眠进程被交换到外存上继续等待
在内存暂停:因调用stop程序而进入跟踪暂停状态,等待其父进程发送命令。
在外存暂停:处于跟踪暂停态的进程被交换到外存上
创建态:新进程正在被创建、但尚未完毕的中间状态
终止态:进程终止自己
linux 下查端口 netstat -nap| grep "port"
再使用 lsof -i :port 查出使用该端口的进程
再使用kill 杀掉进程
查看用户信息 w:
1,w显示信息的含义
JCPU:以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里
PCPU:CPU执行程序耗费的时间
WHAT:用户正在执行的操作
2,查看个别用户信息:w 用户名
3,w显示信息的含义
load average:分别显示系统在过去1、5、15分钟内的平均负载程度。
FROM:显示用户从何处登录系统,“:0”的显示代表该用户时从X Window下,打开文本模式窗口登录的
IDLE:用户闲置的时间。这是一个计时器,一旦用户执行任何操作,该计时器便会被重置
查看系统中的进程 ps:
ps - report a snapshot of the current processes
ps命令查找与进程相关的PID号: 最常用的方法是 ps aux
ps a 显示现行终端机下的所有程序,包括其他用户的程序。
ps -A 显示所有程序。
ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
ps -e 此参数的效果和指定"A"参数相同。
ps e 列出程序时,显示每个程序所使用的环境变量。
ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
ps -H 显示树状结构,表示程序间的相互关系。
ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
ps s 采用程序信号的格式显示程序状况。
ps S 列出程序时,包括已中断的子程序资料。
ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
ps u 以用户为主的格式来显示程序状况。
ps x 显示所有程序,不以终端机来区分。
常用选项
a:显示所有用户的进程
u:显示用户名和启动时间
x:显示没有控制终端的进程
e:显示所有进程,包括没有控制终端的进程
l:长格式显示
w:宽行显示,可以使用多个w进行加宽显示
eg:ps -ef|grep *** 查询进程,如果有多个,可再加通道|grep ***
删除进程时,如果有多个进程,不能直接区分启动的目录
则可以使用 cd /proc/PID,再ll一下,就能看到启动的目录了
查看系统中所有进程
# ps aux #查看系统中所有进程,使用BSD操作系统格式
# ps -le #查看系统中所有进程,使用Linux标准命令格式
ps -aux常用输出信息的含义
USER:用户名
PID:进程号
PPID:父进程的进程号
%CPU:占用CPU时间和总时间的百分比
%MEM:占用内存与系统内存总量的百分比
VSZ:该进程占用虚拟内存的大小,单位是KB
RSS:该进程占用实际物理内存的大小,单位是KB
TTY:进程启动的终端,其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端
STAT:进程当前状态 S休眠状态,D不可中断的休眠状态,R运行状态,Z僵死状态,T停止,s:包含子进程,+:位于后台
START:该进程的启动时间
NI:进程优先级
TIME:进程自从启动以来占用CPU的总时间
COMMAND/CMD:进程的命令名
ps应用实例
# ps 查看隶属于自己的进程
# ps -u or -l 查看隶属于自己进程详细信息
# ps -le or -aux 查看所有用户执行的进程的详细信息
# ps -aux --sort pid 可按进程执行的时间、PID、UID等对进程进行排序
# ps -aux | grep sam 查看用户sam执行的进程
# ps -uU sam 查看用户sam执行的进程
# ps -le | grep init 查看指定进程信息
------------------------------------------------
进程管理的作用
1,判断服务器健康状态
2,查看系统中所有进程
3,杀死进程
kill – 杀死进程
为什么要杀死进程
1,该进程占用了过多的CPU时间
2,该进程占用了过多的CPU时间无法运行
3,运行时间过长,但没有预期效果
4,产生了过多到屏幕或磁盘文件的输出
5,无法正常退出
kill
kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号
-s (signal):其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l
-p:印出 pid , 并不送出信号
-l (signal):列出所有可用的进程信号
常用的进程信号:
kill –,关闭进程
关闭进程:kill进程号
kill -9 进程号(强行关闭)
kill -1 进程号(重启进程)
关闭图形程序:xkill
结束所有进程:killall
killall -i 交互式,询问是否要杀死某个进程
killall -0 进程名 检测进程是否存在,
killall -I 忽略进程名的大小写
查找服务进程号:pgrep 服务名称
关闭进程:pkill 进程名称
pkill -t 终端号: 按照终端号踢出用户
怎么使用pkill呢?
1,w命令 查询本机已登录的用户,TTY(终端号)
2,pkill -9 -t pst/1 强制杀死从pst/1虚拟终端登录的进程
把进程放入后台
1,在命令后加 &
2,在执行命令的过程中,按下ctrl+z快捷键(可以以top命令示范)
查看后台的工作
jobs [-l]
-l 显示工作的PID
"+"号代表最近一个放入后台的工作,也是工作恢复时,默认优先恢复的工作。"-"号代表倒数第二个放入后台的工作。
将后台暂停的工作恢复到前台执行
# fg %工作号
参数:%工作号: %号可以省略,但是注意工作号和PID的区别
补:如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
把后台暂停的工作恢复到后台继续执行
# bg %工作号
注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行,比如说,top命令和vi命令,是不能在后台恢复执行的
补:如果后台中有多个命令,同样可以用bg %jobnumber将选中的命令调出
nice和renice
nice
指定程序的运行优先级
格式:nice -n command
例如:nice -5 myprogram
renice
改变一个正在运行的进程的优先级
格式:renice n pid
例如:renice -5 777
优先级取值范围为(-20,19)*
nohup
使进程在用户退出登陆后仍旧继续执行,nohup命令将执行后的数据信息和错误信息默认储存到文件nohup.out中
格式:
nohup program &
进程的挂起和恢复
进程的中止(挂起)和终止
挂起(Ctrl+Z)
终止(Ctrl+C)
进程的恢复
恢复到前台继续运行(fg)
恢复到后台继续运行(bg)
查看被挂起的进程(jobs)
top 查看系统健康状态
作用:进程状态显示和进程控制,每3秒钟自动刷新一次(动态显示)
常用选项:
-d: 指定刷新的时间间隔 默认是3秒
c: 显示整个命令行而不仅仅显示命令名
u: 查看指定用户的进程
k: 终止执行中的进程
h or ?: 获得帮助
r: 重新设置进程优先级
s: 改变刷新的时间间隔
W: 将当前设置写入~/.toprc文件中
P:以CPU使用率排名,默认项
M:以内存的使用率排名
N:以PID排序
q:退出top
hwclock 硬件时钟
date 软件时钟
hwclock --hctosys 根据硬件时钟来同步软件时钟
hwclock --systohc 根据软件时钟来同步硬件时钟
设置硬件时间
hwclock --set --date="10/30/14 00:00" 格式:月/日/年 时:分:秒
设置软件时间
法一: date 11121314 11月12日13点14分
法二: date -s 12/31/2015 date -s 13:14:00 设置时间为2015年12月13日,13时14分
同步系统时间 时间同步
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
该命令作用:把当前时区调整为上海就是+8区
ntpdate us.pool.ntp.org
该命令作用:利用ntpdate同步标准时间
可以加入定时计划任务,每隔10分钟同步一下时钟:
crontab -e
添加如下:
0-59/10 * * * * /usr/sbin/ntpdate us.pool.ntp.org | logger -t NTP
时间戳换算:
把时间戳换算成日期
date -d "1970-01-01 17382 days"
把日期换算成时间戳:
echo $(($(date --date="2017/08/05" +%s)/86400+1))
#vi /etc/sysconfig/i18n
将 LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
修改为
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
重启机器生效
如果重启未生效,可用 yum 安装中文字体
#yum install fonts-chinese.noarch
命令路径:/bin/mail 执行权限:所有用户
作用:查看发送电子邮件
语法:mail [用户名] 以ctrl+D结束
再使用mail直接回车,查看邮件
& 邮件数字编号 查看邮件的详细信息,& h 查看邮件列表,
& d 删除该邮件,& q 退出
每个用户的邮箱在 /var/spool/mail/用户名
0:关机
1:单用户模式(类似windows安全模式,无图形化界面,只有root可登录)
2:字符界面的多用户模式,是广泛使用的服务器模式(未启动NFS服务)
3:字符界面的多用户模式,是广泛使用的服务器模式
4:自定义的运行级别
5:图形化的多用户的模式(系统默认的级别)
6:重启
etc/rc.d/rc*.d (*可取值:0,1,2,3,4,5,6) 不同的运行级别,运行不同的目录下文件