第 17 章 核心工具集
目录
sort [-o 输出文件] [-t 分隔字符] [+起始字段 -结束字段] [文件]
tar [-]c|x|u|r|t[z|j][v] -f 归档文件 [待打包文件]
细节
Linux 是大小写敏感的系统,所有的命令、路径、选项、参数、变量……都区分大小写
使用 TAB
键补全命令,无论任何时候,多按几次 TAB 总会有所帮助
Shell 的功能键能够协助您更高效的编辑命令,请熟悉其键绑定,尽量使用它
命令由 命令名
、 分隔符
、 选项
、 操作对象
构成
命令名
标识命令的功能,例如cp(copy)、mv(move)、rm(remove)……
有些命令包含一些子命令,您可以认为它的命令名由两个单词构成,例如“apt”软件包管理系统:
apt-get install 安装一个软件
apt-get remove 删除一个软件
分隔符
通常为空格,多个连续的空格视为一个空格,下面两个命令相同:
cp a b
cp a b
有一些特殊符号也属于分隔符,例如管道 |
、重定向 >
、 >>
、 <
、后台运行 &
、序列执行 &&
、 ;
。使用这些符号时,您不需要再使用空格作为分隔符
ls -al|less #两个命令效果相同
ls -al | less #更容易阅读
选项
精细调节命令的行为,以 -
引导,通常为选项的首字母。许多软件都可以使用 -h 选项来阅读使用说明,例如:
apt-get -h
apt-get --help
apt-get -help
apt-get -h -e -l -p
少数命令的选项,不需要以 -
引导,或者使用 -
引导选项全名,例如:
ps aux
/etc/init.d/gdm start
mplayer -loop xxx
递归. 表示在子层次中重复相同操作。例如递归复制某目录,不但复制当前目录及其下的所有文件;而且对当前目录的子目录,也进行递归复制的操作。
格式约定[23]
使用 []
表示可选项,实际输入为方括号中的内容,例如
ls [-l]
- 实际输入为,
ls -l
使用 |
表示 “或” ,以 | 分隔的项目不能同时使用,例如
tar [-z|j c|x vf] 归档文件 [源文件]
- 选项通常紧跟命令名,除非必要,在命令格式中,我们通常省略它们
[23] 与man中的约定相同
系统信息
uptime
联机信息-时间,显示如下
11:27pm up 9 days, 7:12, 3 user, load average: 0.07, 0.12, 0.14
w
联机信息-已登录用户,显示如下
01:04:10 up 1:34, 2 users, load average: 0.25, 0.16, 0.11
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user tty1 192.168.0.1 23:30 1:33 0.14s 0.12s -bash
who
联机信息
-r | 运行级别 |
whoami
显示当前用户名
last
最近用户登录信息
-数字 | 使用数字作为选项,控制显示条目 |
uname
系统信息
-s | 内核名称(默认选项) |
-a | 全部 |
-p | CPU 信息 |
-n | 主机名 |
-r | 内核发行信息(版本号) |
-v | 内核版本信息 |
date
显示、设定系统时间
-u | 显示格林尼洛时间(UTC) | |
MMDDhhmm[[CC]YY][.ss] | 设定时间,需要管理员权限。 | date 12292359 |
MM | 月份 | |
DD | 天数 | |
hh | 小时 | |
mm | 分钟 | |
CC | 年份前两位 | |
YY | 年份后两位 | |
ss | 秒钟 | |
秒钟、年份为可选 | date 122923592006.59 | |
+[%X] | 设定显示格式,默认输出格式: | date +%Y年%m月%d日%A%H:%M:%S%Z |
格式控制 | %n | 换行 |
%t | 制表符 | |
小时 | %H | 00~23 |
%I | 01~12 | |
%k | 0~23 | |
%l | 1~12 | |
%p | AM|PM | |
分、秒 | %M | 分钟(00~59) |
%S | 秒(00..61) | |
%T | hh:mm:ss | |
%r | hh:mm:ss AM|PM | |
%s | 从 1970年1月1日00:00:00 UTC 到目前为止的秒数 | |
%X | %H:%M:%S | |
%Z | 时区 | |
星期 | %a | Sun~Sat |
%A | Sunday~Saturday | |
%w | 一周中的第几天 (0~6) | |
年份 | %Y | 0000~9999 |
%y | 00~99 | |
月份 | %m | 01~12 |
%b | Jan~Dec | |
%h | ||
%B | January~December | |
日期 | %c | 完整日期时间 |
%d | 01~31 | |
%j | 001~366 | |
%x | 本地格式日期 | |
%D | mm/dd/yy | |
一年中的第几周 | %U | 以 Sunday 为一周的第一天 |
%W | 以 Monday 为一周的第一天 |
cal
显示日历
文件管理
细节
/
目录为文件系统根目录,所有目录都是它的子目录
绝对路径以 /
起始,相对路径以当前所在目录起始
目录是一种特殊类型的文件,如果没有特别指明, 文件 包括文件和目录
..
表示上一级目录, .
表示当前目录,它们是两个特殊目录
链接. 为当前文件建立在其它路径中的访问方法。例如将系统中其它位置的可执行文件,链接到 /usr/local/bin
目录下,使用命令调用。
ls [路径]
显示当前目录文件列表
--color | 不同属性以不同颜色显示(默认选项) |
-a | 全部显示 |
-i | 显示 inode值 |
-l | 详细信息 |
-F | 显示文件类型后缀 目录/ 链接@ 可执行文件* 端口文件= 管道文件| |
-A | 显示隐藏文件 |
-R | 递归显示子目录文件列表 |
-S | 按文件大小排序 |
-t | 按修改时间排序 |
-u | 按访问时间排序 |
-d | 只显示目录,不递归显示目录下的文件 |
cd [目录路径] | [特殊路径]
切换目录,目录可以使用绝对路径或者相对路径
~ | $HOME 目录(默认值) |
- | 上一次目录 |
.. | 上一级目录 |
. | 当前目录 |
- 您可以通过修改
/etc/environment
文件,来定义$CDPATH
变量,设定“cd”命令的搜索路径。
pwd
显示当前路径
file 文件名
显示文件类型
-i | 显示 mime类型 |
du [路径]
计算文件或目录空间占用
-h | 人性化显示。自动以 G、M、K 为单位显示占用空间大小 |
--max-depth=数字 | 显示目录深度 |
-l | 重复计算硬链接文件大小 |
-L | 计算符号链接文件大小 |
-a | 显示当前目录子目录中的文件 |
-c | 显示文件数 |
less 文件名
touch 目标文件
触碰,在不修改文件的前提下,更改其时间属性。通常用来创建一个空文件
mkdir 文件夹
创建文件夹
-p 多级目录 | 按路径创建多级目录 |
-m 数字权限值 | 设定权限 |
cp 源文件 目标目录|文件
将源文件复制为目录文件,或者将源文件复制到目标目录。多个源文件使用空格分隔
cp 源目录 目标目录
将源目录复制到目标目录中,如果复制多个源目录,需要使用 -R 选项
-a | 相当于 -dpr 选项 |
-d | 保留链接 |
-f | 强制复制,覆盖目标文件 |
-i | 覆盖时询问用户 |
-p | 保留修改时间和访问权限 |
-r -R | 递归复制(目录=>目录) |
-l | 创建链接 |
-v | 显示过程 |
rm 目标目录|文件
删除
-r -R | 递归删除(用于删除目录) |
-f | 强制删除(无需确认,直接删除。慎用!) |
-i | 交互式删除(询问用户) |
rmdir 目标目录
删除目录时,建议您使用“rm -r”命令
mv 源文件 目标目录|文件
相当于 cp 后删除源文件,也可以作为“重命名”使用。
-f | 强制,覆盖目标文件 |
-i | 覆盖时询问用户 |
-v | 显示过程 |
ln 源文件 链接
链接
-s | 符号链接 |
-f | 强制链接,覆盖目标文件 |
-i | 覆盖时询问用户 |
文件操作
split 源文件 [目标文件名前缀]
将源文件按一定规则分割成若干个目标文件。默认文件名前缀为 x
-行数 | 按行数分割文件 |
-l 行数 | 同上 |
-b 字节 | 按大小分割文件。可以使用 b、k、m 作单位,不指定单位的情况下,默认单位为 b |
-C 字节 | 按大小分割文件,并尽量保持每行的完整 |
cat 文件名
输出文件内容。用空格分隔多个文件名
-n | 在输出中添加行号 |
-b | 在输出中添加行号,空行不编号 |
-s | 将两行或以上的空行,合并为一个空行 |
- 可以将多个文件内容连接到一起输出。使用重定向合并为一个文件 cat xaa xab xac > file.split
sort [-o 输出文件] [-t 分隔字符] [+起始字段 -结束字段] [文件]
对文本内容排序
-m | 合并文件 |
-c | 检查文件是否已按规则排序 |
-b | 忽略行首空格字符 |
-u | 忽略内容重复行 |
-f | 忽略大小写 |
-l | 忽略非打印字符 |
-M | 作为月份比较 |
-d | 按字典顺序排序,按照字母、数字、空格、制表符排序 |
-r | 逆序输出 |
more
查看文件内容,建议使用 less
diff 文件1 文件2
比较文件
无选项 | 混合 ed 命令格式 |
-u [数字] | 统一格式,数字为显示上下文行数 |
--unified[=数字] | |
-c [数字] | 上下文格式,数字为显示上下文行数 |
--context[=数字] | |
-e | ed 命令格式 |
--ed | |
-f | RCS 命令格式 |
patch
使用 diff -uN[r] 旧文件 新文件 > 补丁文件 命令创建补丁文件。
在待补丁文件的目录下使用 patch -p[数字] <补丁文件 命令打补丁
-p [数字] 表示忽略补丁文件中记录的目录,数字为忽略的层数。
patch -R 已打补丁文件 补丁文件 将已打补丁文件恢复到原来的状态
cksum [文件名]
计算文件的 CRC值。不指定文件名则从标准输入设备读入数据
md5sum [文件名]
计算文件的 md5值。不指定文件名则从标准输入设备读入数据
-t | 以文本模式读取 |
-b | 以二进制模式读取 |
-c md5纪录 | 校验 md5纪录 中的文件(使用 md5sum 配合重定向生成纪录文件) |
压缩解压
tar [-]c|x|u|r|t[z|j][v] -f 归档文件 [待打包文件]
将多个文件打包为一个归档文件,可以在打包的同时进行压缩。支持的格式为 tar(归档)、gz(压缩)、bz2(压缩率更高,比较耗时)
操作选项 | -c | 创建 |
-x | 解包 | |
-u | 更新 | |
-r | 添加 | |
-t | 查看 | |
-d | 比较压缩包内文件和文件 | |
-A | 将 tar 文件添加到归档文件中 | |
格式选项 | -z | 使用 gz 压缩格式 |
-j | 使用 bz2 压缩格式 | |
其它 | -v | 显示过程 |
-f 文件名 | 归档文件的文件名,使用 - 代表标准输入/输出 |
|
-C 解压路径 | 将压缩包中的文件解压到指定目录 | |
--exclude=文件 | 排除文件 | |
-P | 使用绝对路径压缩时,保留根目录“/” | |
-W | 校验 | |
-p | 还原文件权限 | |
-w | 询问用户 | |
--totals | 统计 | |
-T 文件列表 | 处理文件列表中的文件 | |
-X 文件列表 | 排除文件列表中的文件 |
7z|7za 子命令 [选项] 压缩包 [文件]
子命令 | a | 添加 |
d | 删除 | |
e | 解压 | |
x | 带路径解压 | |
l | 列表查看 | |
t | 测试 | |
u | 更新 | |
选项 | -m 压缩方式 | |
-m0=压缩算法 | 默认使用 lzma | |
-mx=数字 | 1~9 压缩级别 | |
-mfb=64 | number of fast bytes for LZMA = 64 | |
-md=字典大小 | 设置字典大小,例如 -md=32m | |
-ms=on|off | 是否固实压缩 | |
-o输出目录 | 设置输出目录 | |
-p密码 | 使用密码 | |
-r数字 | 递归,使用数字定义递归子目录的深度 | |
-sfx[模块名称] | 使用自解压模块 | |
-si | 从标准输入设备读入数据 | |
-so | 将数据写入标准输出设备 | |
-y | 所有询问均回答 Yes | |
-w路径 | 设置工作目录 |
搜索
whereis 程序名称
查找软件的安装路径
-b | 只查找二进制文件 |
-m | 只查找帮助文件 |
-s | 只查找源代码 |
-u | 排除指定类型文件 |
-f | 只显示文件名 |
-B 目录 | 在指定目录下查找二进制文件 |
-M 目录 | 在指定目录下查找帮助文件 |
-S 目录 | 在指定目录下查找源代码 |
locate 文件名称
在文件索引数据库中搜索文件
-d 数据库路径 | 搜索指定数据库 |
updatedb
更新文件索引数据库
find [路径] 表达式
查找文件
-name 表达式 | 根据文件名查找文件 |
-iname 表达式 | 根据文件名查找文件,忽略大小写 |
-path 表达式 | 根据路径查找文件 |
-ipath 表达式 | 根据路径查找文件,忽略大小写 |
-amin 分钟 | 过去N分钟内访问过的文件 |
-atime 天数 | 过去N天内访问过的文件 |
-cmin 分钟 | 过去N分钟内修改过的文件 |
-ctime 天数 | 过去N天内修改过的文件 |
-anewer 参照文件 | 比参照文件更晚被读取过的文件 |
-cnewer 参照文件 | 比参照文件更晚被修改过的文件 |
-size 大小 | 根据文件大小查找文件,单位 b c w k M G |
-type 文件类型 | 根据文件类型查找文件。b 块设备 c 字符设备 d 目录 p 管道文件 f 普通文件 l 链接 s 端口文件 |
-user 用户名 | 按归属用户查找文件 |
-uid 用户编号 | 按用户编号查找文件 |
-group 群组名 | 按归属群组查找文件 |
-gid 群组编号 | 按群组编号查找文件 |
-empty | 查找空文件 |
grep 字符串|正则表达式 文件名|标准输入
在文件中搜索内容
权限管理
细节
一个文件主要包含下列属性,ls -l
- rwxrwxrwx user group date filename
111 101 101
- 对于文件夹,必须拥有它的可执行权限,才能够使用 cd 命令进入该文件夹;拥有可读权限,才能够使用 ls 命令查看该文件夹的文件列表。
- root用户 拥有最高权限
可以使用 3位的二进制数字 来描述一组权限,某一权限对应的数字为 1,则表示具有该种权限,为 0,则不具有该种权限。
使用二进制数字来描述一组权限,虽然非常直观,但是 3组 权限需要用 9位 数来表示,不够方便。因此我们将三组权限使用 3位8进制数字 来表示。
每种权限对应的数字:
权限 | r | w | x |
二进制 | 100 | 010 | 001 |
八进制 | 4 | 2 | 1 |
将这 3位8进制数字 相加的结果,就可以表示该组权限的具体内容,例如:
7=4+2+1=rwx
5=4+1=rx
755=4+2+1,4+1,4+1=rwx,r-x,r-x
还可以使用 a 、 u 、 g 、 o 表示归属关系,使用 = 、 + 、 - 表示权限变化,使用 r 、 w 、 x 表示权限内容
a 所有用户 u 归属用户 g 归属群组 o 其它用户
= 具有权限 + 增加权限 - 去除权限
r 可读权限 w 可写权限 x 可执行权限
例如:
a+x 给所有用户增加可执行权限
go-wx 将归属群组和其它用户的可写、可执行权限去掉
u=rwx 归属用户具有可读、可写、可执行权限
chmod 权限表达式 文件|目录
更改文件的权限。权限的表达式可以使用 3位8进制数字 表示,或者使用 augo +-= rxw-s 来表示
-R | 递归 |
-v | 显示过程 |
-c | 类似“-v”,仅显示更改部分 |
--reference=参照文件或目录 | 以指定文件为参照更改权限 |
示例:
chmod -R a+x path
chmod -Rv 755 path
chown 归属用户[:归属群组] 文件|目录
更改文件的归属用户。可以使用用户名或者用户编号
-R | 递归 |
-v | 显示过程 |
-c | 类似“-v”,仅显示更改部分 |
--reference=参照文件或目录 | 以指定文件为参照更改权限 |
示例:
chown user:admin path
chown -R user.admin path
chown user path
chgrp 归属群组 文件|目录
更改文件的归属群组。可以使用群组名或者群组编号,选项同上
SUID、SGID、Sticky bit
某些情况下,需要以可执行文件归属用户的身份执行该文件,可以为该文件设置 SUID。同样,设置 SGID 能够以该文件归属群组的身份执行它。
例如:用户自行设定密码。出于安全方面的考虑, /etc/shadow
只能由 root用户 直接修改。
-rw------- root root /etc/shadow
这个时候,可以为程序 /usr/bin/passwd 设置 SUID,当普通用户执行“passwd”命令时,便能够以该程序归属用户 root 的身份修改 /etc/shadow 文件。而“passwd”程序自身带有身份验证机制,不能通过验证时拒绝执行,从而保证了安全。
ls -l /usr/bin/passwd
-r-s--x--x root root /usr/bin/passwd
我们发现,归属用户的可执行权限位使用 s ,表示 SUID。同样,归属群组的可执行权限位使用 s ,表示 SGID。任何用户或群组都拥有 “其它用户” 的权限,所以不需要以 其它用户 身份执行文件,其它用户的可执行权限位便不会出现 s 。该权限位可能出现的属性为 t ,也就是粘着位 Sticky bit。
ls -ld /tmp
drwxrwxrwt root root /tmp
粘着位表示任何用户都可能具有写权限,但只有该归属用户或 root用户 才能够删除
SUID、SGID、Sticky bit 也可以像权限一样,使用一个八进制数表示,如下:
4 | SUID |
2 | SGID |
1 | Sticky bit |
通过在“chmod”命令中使用 4个八进制数 的表达式,如 4755 ,用第一位表示 SUID、SGID 或 Sticky bit,便能够为文件设置这些特殊权限。示例:
chmod -R 4755 path
lsattr [路径]
查看文件的特殊属性
-a | 全部显示 |
-d | 只显示目录 |
-R | 递归 |
特殊属性包括:
a | 仅供附加用途 |
b | 不更新最后存取时间 |
c | 压缩后存放 |
d | 排除在转储操作之外 |
i | 不得任意更动文件或目录 |
s | 保密性删除文件或目录 |
S | 即时更新文件或目录 |
u | 预防意外删除 |
chattr +|-|=属性 路径
更改文件特殊属性
-R | 递归 |
-V | 显示过程 |
用户管理
细节
root 用户为根用户,也就是系统管理员,拥有全部权限
一个用户只能拥有一个 群组编号 ,但是还可以归属于其它附加群组
用户管理的重要配置文件:
/etc/passwd | 用户名 密码位 用户编号 归属群组编号 姓名 $HOME目录 登录Shell |
/etc/shadow | 用户名 已加密密码 密码改动信息 密码策略 |
/etc/group | 群组名 密码位 群组编号 组内用户 |
/etc/gshadow | 群组密码相关文件 |
/etc/sudoers | 用户名 权限定义 权限 |
- 请使用“visudo”命令修改
/etc/sudoers
,而不要直接编辑 - 可以使用 pwconv 命令创建影子密码,将
/etc/passwd
文件中的密码转换到/etc/shadow
文件
su [用户名]
切换到其它用户,默认切换到 root用户。提示密码为目标用户密码
-f | 快速切换,忽略配置文件 |
- | -l | 重新登录 |
-m |-p | 不更改环境变量 |
-c 命令 | 切换后执行命令,并退出切换 |
sudo 命令
以其它用户的身份执行命令,默认以 root 的身份执行。提示密码为当前用户密码
-s | 切换为 root shell |
-i | 切换为 root shell,并初始化 |
-u 用户名|用户编号 | 执行命令的身份 |
-l | 显示自己的权限 |
passwd [用户名]
设定用户密码
-d | 清除密码 |
-l | 锁定账户 |
-e | 使密码过期,在下次登录时更改密码 |
-S | 显示密码认证信息 |
-x 天数 | 密码过期,最大使用时间 |
-n 天数 | 冻结密码,最小使用时间 |
-s | 更改 登录Shell |
-f | 更改用户信息 |
示例:
$passwd
Changing password for user
(current) UNIX password: #原密码
Enter new UNIX password: #新密码
Retype new UNIX password: #确认新密码
gpasswd 群组名
更改群组
-a 用户名 | 将用户加入群组 |
-d 用户名 | 将用户从群组中删除 |
-r | 删除密码 |
-A 用户名 | 将用户设置为群组管理员(群组管理员或 root 才可以使用 gpasswd 命令) |
-M 用户1,用户2…… | 设置群组成员 |
chsh -s Shell [用户名]
更改登录 Shell
usermod 用户名
修改用户账号
-d 目录 | 设定 $HOME 目录 |
-m | 设定 $HOME 目录时自动建立该目录 |
-s Shell | 修改用户 登录Shell |
-l 新登录名 | 修改为新登录名 |
-u 用户编号 | 修改用户编号 |
g 群组名 | 修改用户归属群组 |
-G 群组名 | 修改用户归属辅组 |
-L | 锁定帐户 |
-U | 解除锁定 |
-e 过期时间 | 设定用户账号过期时间 |
-f 缓冲天数 | 设定密码过期后多长时间关闭账号 |
-c 字符串 | 修改用户备注 |
useradd 用户名
新建用户
-d 目录 | 设定 $HOME 目录 |
-m | 自动建立 $HOME 目录 |
-M | 不自动建立 $HOME 目录 |
-s Shell | 设定用户 登录Shell |
-u 用户编号 | 设定用户编号 |
-g 群组名 | 设定用户归属群组 |
-G 群组名 | 设定用户归属附加群组 |
-n | 不建立以用户名为名称的群组 |
-e 过期时间 | 设定用户账号过期时间 |
-f 缓冲天数 | 设定密码过期后多长时间关闭账号 |
-c 字符串 | 设定用户备注 |
-D [表达式] | 更改预设值 (预设值保存于 /etc/default/useradd 文件中) |
- 新建用户规则保存于
/etc/login.defs
文件中 - 新建用户默认文件保存于
/etc/skel/
目录中。新建用户时,系统自动拷贝此目录下的文件至新建用户的$HOME
目录
userdel 用户名
删除用户
-r | 删除用户相关文件和目录 |
id [用户名]
显示用户 用户编号 群组编号 归属附加群组
进程管理
细节
进程一般分为批处理进程、交互进程和守护进程三类。
守护进程总是活跃,在系统启动时通过脚本自动启动,或由 root 启动,通常在后台运行。
一个进程可以拥有子进程。当父进程终止时,它的子进程也随之终止;而子进程终止时,父进程通常可以继续运行。
init 进程为根进程,所有进程都是它的子进程
ps
显示进程信息,选项可省略 “-
”
aux | 以 BSD风格 显示进程 常用 |
-efH | 以 SystemV风格 显示进程 |
-e | -A | 显示所有进程 |
a | 显示终端上所有用户的进程 |
x | 显示无终端进程 |
u | 显示详细信息 |
f | 树状显示 |
w | 完整显示信息 |
l | 显示长列表 |
输出字段
USER | 进程所有者 |
PID | 进程编号 |
PPID | 父进程编号 |
%CPU | CPU 占用率 |
%MEM | 内存占用率 |
NI | 进程优先级。数值越大,占用 CPU 时间越少 |
VSZ | 进程虚拟大小 |
RSS | 页面文件占用 |
TTY | 终端编号 |
STAT | 进程状态 |
D | 不可中断 |
R | 正在运行,或在队列中的进程 |
S | 处于休眠状态 |
T | 停止或被追踪 |
Z | 僵尸进程 |
X | 死掉的进程 |
< | 高优先级 |
N | 低优先级 |
L | 有些页被锁进内存 |
s | 包含子进程 |
+ | 位于后台的进程组 |
l | 多线程,克隆线程 |
pstree [ 进程编号 | 用户 ]
树状显示进程信息。可选择显示某用户的进程或从某进程编号开始的进程
-a | 显示完整命令及选项 |
-c | 完全显示重复进程 |
-p | 显示进程编号,隐含-c |
-n | 按进程编号排列进程 |
-u | 显示进程所有者 |
-h | |
-H 进程编号 | 高亮显示进程编号指定的进程及其祖先 |
pgrep 进程名
显示进程编号
-l | 显示进程名和进程编号 |
-o | 进程起始编号 |
-n | 进程终止编号 |
kill [信号代码] 进程编号
根据进程编号向进程发送信号,常用来结束进程,默认信号为 -9
-l [信号代码] | 显示、翻译信号代码 |
-9 | -KILL | 发送 kill 信号,退出 |
-6 | -ABRT | 发送 abort 信号,退出 |
-15 | -TERM | 发送 Termination 信号 |
-1 | -HUP | 挂起 |
-2 | -INT | 从键盘中断,相当于 Ctrl+c |
-3 | -QUIT | 从键盘退出,相当于 Ctrl+d |
-4 | -ILL | 非法指令 |
-11 | -SEGV | 内存错误 |
-13 | -PIPE | 破坏管道 |
-14 | -ALRM | |
-STOP | 停止进程,但不结束 |
-CONT | 继续运行已停止的进程 |
-9 | -1 | 结束当前用户的所有进程 |
pkill [信号代码] 进程名称
结束进程族。如果结束单个进程,请用 kill
xkill
在图形界面中点杀进程。执行此命令后,鼠标指针变为骷髅图案(一定看过《加勒比海盗》吧)。在窗口中点击左键杀死进程,右键取消
top
动态、交互式进程管理器
启动选项 | -b | |
-c | 显示进程启动状态,包括选项、参数、操作对象等;而不只是进程名 | |
-d 秒 | 刷新频率。 -d 5,表示5秒刷新一次 | |
-n 次 | 刷新次数,然后退出。 -n 5,表示刷新5次后退出 | |
-i | 禁止显示空闲进程或僵尸进程 | |
-p 进程编号 | 仅监视指定进程的编号 | |
-s | 安全模式运行,禁用一些交互指令 | |
-S | 累积模式,输出每个进程的总的 CPU 时间,包括已死的子进程 | |
交互命令 | space | 立即刷新 |
k | 交互式杀死进程,提示输入进程编号 (默认发送信号15) | |
r | 设定 renice,提示输入进程编号和 renice值 | |
s | 改变两次刷新时间间隔,以秒为单位 | |
n | 设定显示进程数, 0 为不作限制 | |
i | 隐藏空闲进程和僵尸进程 | |
S | 切换到累积时间模式 | |
l | 开关,在顶部显示 uptime 信息 | |
t | 开关,在顶部显示 进程和 CPU 状态 | |
m | 开关,在顶部显示 free 信息 | |
c | 显示方式切换: 进程名/进程启动状态 | |
A | 按进程启动顺序进行排序。由新到旧 | |
M | 按内存占用排序。由大到小 | |
N | 以进程编号排序。由大到小 | |
P | 按 CPU 占用排序。由大到小 | |
T | 按时间/累积时间排序 | |
f|F | 设定显示字段。设定完成后空格退出 | |
o|O | 设定显示字段的排序。大写向前移动,小写向后移动,空格退出 | |
h|? | 显示有关安全模式和累积模式的帮助信息 | |
W | 把当前的配置写到 ~/.toprc 中 |
renice 优先级 进程
重新设定进程优先级(通常无此必要)
优先级表达式 | +|-|= nice值 | |
nice 取值范围 | -20~19 | |
进程表达式 | -p 进程编号 | 通过进程编号进行设定 |
-g 进程群组编号 | 通过进程群组编号 | |
-u 用户编号 |
nohup 命令 [选项]
将任务提交到后台,输出附加到 ~/nohup.out
文件。即便用户退出登录,提交的命令仍继续执行。
命令 &
背景执行此命令,如果用户退出登录,则命令停止执行
命令1 ; 命令2 ; ......
命令队列,从左向右,依次执行以 ;
分隔的命令
命令1 && 命令2 && ......
命令队列,从左向右,依次执行以 &&
分隔的命令。前一个命令执行成功,后一个命令才能执行
Ctrl+z
挂起当前任务
jobs
显示背景任务
-l | 显示完整信息 |
bg [任务编号]
将挂起的任务背景执行
fg [任务编号]
将背景任务调到前台执行
磁盘和内存管理
细节
Linux 中,设备用/dev/
目录下的文件表示。例如
/dev/hda1 第一块硬盘的第一主分区
/dev/hdb5 第二块硬盘的第一逻辑分区
/dev/sda4 第一块 SATA 硬盘的第四主分区,或者扩展分区
/dev/null 黑洞设备
关于磁盘设备,详见“分区概念”一节
mount 设备文件 [挂载路径]
挂载文件系统
-t | 指定文件系统的类型 | 通常不必指定,mount 自动检测 |
常见类型 | reiserfs | ReiserFS 3.6版 |
xfs | SGI 技术 | |
jfs | IBM 技术 | |
ext3 | Linux 传统文件系统 | |
vfat | fat fat32 | |
ext2 | Linux 传统文件系统,不带日志 | |
ntfs | WINNT | |
iso9660 | 光盘 | |
smbfs | Windows 文件共享 | |
-o [选项1] [选项2] ..... | ||
选项 | loop | 环设备。光盘、ISO 映像文件等,通常用于挂载映像文件(而不是设备文件) |
bind | 绑定。将一个目录(而不是设备文件)挂载到另一个目录 | |
ro | rw | 只读 readonly;可读写 read-write | |
sync | async | 同步模式|异步模式。决定修改是否立即写入文件系统 | |
atime | noattime | 读取时是否修改访问时间。对于写入敏感设备,例如闪存、软盘,建议使用 noatime | |
auto | noauto | 自动挂载模式 | |
exec | noexec | 是否允许执行 | |
defaults | 使用预设的选项 rw, suid, dev, exec, auto, nouser, async | |
iocharset=UTF-8 | 指定字符集,可简写为 utf8 | |
codepage=936 | 指定代码页,可简写为 cp936 西文系统代码页为 437 | |
umask=权限掩码 | 设定权限掩码 | |
uid=用户编号 | 设定归属用户 | |
gid=群组编号 | 设定归属群组 | |
remount | 以不同选项重新挂载 | |
-L 卷标 | 挂载带有特殊卷标的分区 |
权限掩码=777-目标权限(三位) | 7777-目标权限(四位)假如权限掩码为 022 ,则目标权限为 755 rwxr-xr-x可以使用 umask 命令设置权限掩码
提示:挂载 NTFS 分区时请使用 utf8 选项;挂载 FAT 分区时请使用 iocharset=utf8,codepage=936 选项,以避免乱码
mount -a
挂载 /etc/fstab
文件中定义的所有设备。示例:
sudo mount -t iso9660 -o loop /dev/cdrom0 /media/cdrom
sudo mount -t vfat -o remount iocharset=utf8,codepage=936 /dev/hda5 /media/hda5
umount 设备文件 | 挂载路径
卸载已挂载文件系统
df
查看已挂载文件系统的磁盘空间占用
-a | 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc 文件系统 |
-T | 显示文件系统类型 |
-k | 以 k 字节为单位显示 |
-i | 显示 i节点 信息,而不是磁盘块 |
-t 文件系统类型 | 显示指定类型的文件系统的磁盘空间使用情况 |
-x 文件系统类型 | 列出排除指定类型文件系统的磁盘空间使用情况(与 t 选项相反) |
-l | 只显示本地文件系统 |
free
查看内存、缓冲区、交换空间的占用
-b | 以字节为单位显示数值 |
-k | 以千字节为单位显示数值 |
-m | 以兆字节为单位显示数值 |
-g | 以吉字节为单位显示数值 |
-l | 显示内存占用峰值 |
-o | 不显示缓冲区占用 |
-t | 统计结果 |
-s 秒 | 刷新频率 |
sync
同步文件系统。将缓冲区中的数据写入文件系统
fdisk 磁盘设备文件
分区表修改工具(磁盘设备文件应为整块磁盘,而不是磁盘中的分区。例如 /dev/sda
,而不是 /dev/sda1
)
m | 使用帮助 |
l | 查看已知文件系统类型 |
p | 显示分区信息 |
n | 新建分区 (p:主分区 l:扩展分区 参见 “分区概念”一节 ) |
d | 删除分区 |
t | 改变分区类型 |
w | 将改动写入分区表 |
q | 放弃改动并退出 |
fdisk -l 查看所有磁盘分区信息
cfdisk
更加友善的分区表修改工具
mkfs.文件系统类型 分区设备文件
将分区格式化为文件系统。示例:
sudo mkfs.reiserfs /dev/hda1
sudo mkfs.xfs /dev/sda1
hdparm 磁盘设备文件
设置硬盘参数
-d 0|1 | DMA 模式开关 |
-a 0|1 | 预读模式开关 |
-t | 性能测试 |
-T | 缓存性能测试 |
-c 0|1|3 | 32位传输模式开关 |
-g | 显示柱面,扇区等信息 |
-i|-I | 显示磁盘信息 |
硬件管理
lspci
查看 PCI 总线连接的设备(实际上也可以查看 ISA、AGP、USB 等总线信息)
-v | 显示详细信息 |
-vv | |
-vvv | |
-k | 同时显示使用的驱动和加载的模块 |
-n | 显示设备 ID号 |
-b | 显示 PCI、ISA 扩展槽地址和中断 |
-t | 显示总线树结构 |
-F 文件 | 从指定文件读信息 |
-m | 以便于机器处理的格式输出所有硬件信息 |
-mm |
lsusb
查看 USB 接口连接的设备
lsmod
查看已加载模块。/lib/modules/
uname -r 目录下为所有可用模块
modprobe 模块名称
启用模块
-a | 加载所有匹配模块 |
-c | 显示当前使用的配置 |
-d | 显示调试信息 |
-k | 将指定模块设置为"自动清除"模式 |
-l | 显示所有匹配模块 |
-n | 模拟执行 |
-q | 不显示错误信息 |
-r | 删除使用命令加载的模块;对非命令加载的模块设置"自动清除"模式 |
-s | 将结果记录到系统记录中 |
-t | 指定模块类型 |
-v | 显示详细信息 |
-C | 指定配置文件.默认使用/etc/modules.conf 文件为配置文件 |
网络管理
其它
echo 字符串
回显。较复杂的字符串,可以使用 "
括起来。
选项 | -n | 输出内容不换行 |
-E | 不解析脱字符 | |
-e | 解析脱字符 | |
控制字符 | \ | 反斜线 |
\a | 警告 | |
\b | 退格 | |
\n | 换行 | |
\r | 回车 | |
\t | 水平制表符 |
clear
清空屏幕
alias 输入内容=实际内容
别名,为命令指定一个别名,以简化输入。例如:
alias ls='ls -AF --color=auto'
- 可以将您的定义保存在
~/.bashrc
文件中
export 变量名
将变量导出为环境变量,常写变量赋值一同使用,例如:
export PATH="$PATH:xxx"
shutdown
关闭计算机,向根进程 init 发送信号,更改 runlevel 为 0 (halt)
-h | 关闭电源 |
-r | 重启 |
-n | 强行关机,不向 init进程 发送信号 |
-k | 模拟关机,向登录者发送关机警告 |
-t 秒 | N秒后关机 |
time 时间 | 定时关机 |
-c [说明信息] | 取消关机 |
-f | 重启时忽略检测文件系统 |
-F | 重启时强制检测文件系统 |
halt
关闭计算机。 调用 shutdown -h ,结束系统进程,同步文件系统,停止内核。
-n | 不同步文件系统 | ||
-w | 模拟关机,写 /var/log/wtmp 纪录 |
-f | 不调用 shutdown ,强行关机 |
-p | 默认选项,关机时调用 poweroff | ||
-i | 关机前断开网络 |
reboot
重新启动计算机。选项与 halt 相似
init 数字
更改运行级别
0 | 关机 |
1 | 单用户模式 |
6 | 重启 |
chroot 路径
更改根目录,重新定义会话的运行环境。(通常用在多系统环境下使用)