# 系统
# 信息
- uname -m 显示处理器架构
- uname -r 显示正在使用的内核版本
- cat /proc/cpuinfo 查看详细 CPU 信息
- date 显示系统日期
# 查询
- man 查看命令或函数的详细信息。eg:
man <info>
- which 查找命令。eg:
which <cmd>
- pwd 显示当前工作的操作路径
- grep 查找内容里符合条件的字符串或正则表达式
# 进程
ps 显示当前进程的状态
-aux
输出格式:USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 行程拥有者
- PID: pid
- % CPU: 占用的 CPU 使用率
- % MEM: 占用的记忆体使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- TTY: 终端的次要装置号码 (minor device number of tty)
- STAT: 该行程的状态:
- D: 无法中断的休眠状态 (通常 IO 的进程)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱 A I/O)
- START: 行程开始时间
- TIME: 执行的时间
- COMMAND: 所执行的指令
top 实时显示系统的整体性能信息以及正在运行的进程的相关信息
-d <number>
指定 top 命令的刷新时间间隔,单位为秒-n <number>
指定 top 命令运行的次数后自动退出-p <pid>
仅显示指定进程 PID 的信息-u <user>
仅显示指定用户名的进程信息
整体性能信息:
us, user:运行不需要的用户进程的时间
sy, system:运行内核进程的时间
ni, nice:运行 nice 用户进程的时间
id, idle:内核空闲处理程序花费的时间
wa, IO-wait:等待 I/O 完成的时间
hi:用于维护硬件中断的时间
si:用于处理软件中断的时间
st:虚拟化环境从该虚拟机窃取的时间
进程信息:
- PID:进程的标识符。
- USER:运行进程的用户名。
- PR(优先级):进程的优先级。
- NI(Nice 值):进程的优先级调整值。
- VIRT(虚拟内存):进程使用的虚拟内存大小。
- RES(常驻内存):进程实际使用的物理内存大小。
- SHR(共享内存):进程共享的内存大小。
- % CPU:进程占用 CPU 的使用率。
- % MEM:进程占用内存的使用率。
- TIME+:进程的累计 CPU 时间。
kill 终止正在运行的进程。eg:
kill <pid>
-9
表示无条件退出,但由进程自行决定是否退出
# 控制
- halt 关闭系统
- reboot 重启系统
- poweroff 关机
# 操作目录
ls 列出目录内容
-a
显示所有文件和目录包括隐藏的-l
显示详细列表
cd 切换目录路径。eg:
cd <path>
cd / --> 跳转到根目录
cd ~ --> 跳转到家目录
cd .. --> 跳转到上级目录
cd ./home --> 跳转到当前目录的 home 目录下
cd /home --> 跳转到根目录下的 home 目录下
cd --> 不添加任何参数,也是回到家目录
# 操作文件 / 文件夹
# 浏览
cat 一次性显示文件所有内容,更适合查看小的文件。eg:
cat <file>
-n
显示行号
less 分页显示文件内容,更适合查看大的文件。eg:
less <file>
head 显示文件的开头几行(默认是 10 行)。eg:
head <file>
tail 显示文件的结尾几行(默认是 10 行)。eg:
tail <file>
# 更改
- touch 创建文件。eg:
touch <name>
- mkdir 创建文件夹。eg:
mkdir <name>
-m
配置文件权限,无视默认权限(umask)-p
递归创建所需目录,无论是否有上一级目录路径
- cp 拷贝文件 / 文件夹。eg:
cp <source> <dest>
-r
递归复制文件夹及其子文件-i
在复制前提示确认,如果目标文件已存在,则会询问是否覆盖-p
保留源文件的权限、所有者和时间戳信息-f
强制复制,即使目标文件已存在也会覆盖,而且不给出提示
- mv 移动文件 / 文件夹。eg:
mv <source> <dest>
- rm 删除文件。eg:
rm <name>
-r
递归删除文件夹文件夹及其子文件-i
向用户确认是否删除-f
强制删除,不给出提示
- ln 创建链接(硬链接 or 软链接)。硬链接:等同于复制多一个文件,但共享同一块数据内容(即修改任何一个文件,修改的都是同一块内容);软链接:类似
windows
平台下的快捷方式,ln
出来的文件指向源文件,当源文件丢失,将会变成死链接。。eg:ln <source> <dest>
-s
创建软链接- 软链接删除使用
rm -rf
命令操作,跟正常的删除命令一样 -snf
修改指向新的源地址
# 压缩
- tar 压缩
-v
表示详细输出,列出被解压的文件-f
指定文件的名称-c
表示创建新的归档文件-x
表示解压操作-r
向已存在的归档中追加文件-t
列出归档文件中的内容-z
表示使用 gzip 压缩程序,得到.tar.gz
后缀-j
表示使用 bzip2 压缩程序,得到.tar.bz2
后缀-J
表示使用 xz 压缩程序,得到.tar.xz
后缀
# 文件夹压缩
格式 | 压缩 | 显示 | 解压 |
---|---|---|---|
.tar.gz | tar -zcvf xxx.tar.gz <folder> | tar -tvf xxx.tar.gz | tar -zxvf xxx.tar.gz |
.tar.xz | tar -Jcvf xxx.tar.xz <folder> | tar -tvf xxx.tar.xz | tar -Jxvf xxx.tar.xz |
.tar.bz2 | tar -jcvf xxx.tar.bz2 <folder> | tar -tvf xxx.tar.bz2 | tar -jxvf xxx.tar.bz2 |
.zip | zip xxx.zip <folder> | zip -sf xxx.zip | unzip xxx.zip |
.rar | rar -a xxx.rar <folder> | rar -v xxx.rar | unrar -x xxx.rar |
# 文件压缩
格式 | 压缩 | 显示 | 解压 |
---|---|---|---|
.Z | compress <file> | 无 | uncompress xxx.Z |
.bz2 | bzip2 -z <file> | 无 | bzip2 -d xxx.bz2 |
.gz | gzip <file> | 无 | gzip -d xxx.gz |
# 用户和群组
# 用户
sudo 以
root
身份运行命令,使用当前用户密码解锁一般来说,
sudo
命令用来临时提升权限并运行单行命令,但也有几个特殊的命令切换至超级管理员权限:sudo -s # 使用当前用户的环境变量,不跳转目录,拥有超级管理员权限
sudo -i # 使用 root 用户的环境变量,跳转到 /root,拥有超级管理员权限
sudo su # 使用 root 用户的环境变量,不跳转目录,拥有超级管理员权限
su 切换用户,需要
root
用户权限,使用 root 用户密码解锁su <user> # 切换 <user> 后,不改变原用户的工作目录,及其他环境变量目录
su - <user> # 切换 <user> 后,同时切换到新用户的工作环境中
note:当
<user>
缺省时,切换成 root 身份。sudo
VSsu
拥有超级管理员权限sudo su 密码 需要输入当前用户的密码 需要输入 root 用户的密码 行为 临时使用超管权限运行单行命令 允许多条命令以超管权限运行,直至退出登录 记录 执行的操作都会被记录下 无法直接跟踪记录执行了什么操作 note:
大概是因为使用
su
命令或直接以 root 用户身份登录有风险,所以,一些 Linux 发行版(如 Ubuntu)默认禁用 root 用户帐户。鼓励用户在需要 root 权限时使用sudo
命令。如果你想在系统中启用 root 用户帐户(强烈反对,因为你可以使用sudo
命令或sudo su
命令),你必须手动设置 root 用户密码,可以使用命令:sudo passwd root
。useradd 添加新用户。eg:
useradd <user>
passwd 修改用户密码
userdel 删除用户。eg:
userdel <user>
# 群组
- groupadd 创建群组。eg:
groupadd <group>
- groupdel 删除一个已存在的群组。eg:
groupdel <group>
- groups 查看用户所在群组
# 权限
Linux 下权限的属组有 拥有者 、群组 、其它组 三种,权限类型一般包括读,写,执行。对应字母为 r、w、x。
id 查看所属权限
chmod 改变文件 / 文件夹权限
-R
递归应用权限十位权限设定表示:
rwx = 111 = 7
rw- = 110 = 6
r-x = 101 = 5
r-- = 100 = 4
-wx = 011 = 3
-w- = 010 = 2
--x = 001 = 1
--- = 000 = 0
常见的权限表示形式有:
-rw------- (600) 只有拥有者有读写权限。
-rw-r--r-- (644) 只有拥有者有读写权限;所属组用户和其他用户只有读权限。
-rwx------ (700) 只有拥有者有读、写、执行权限。
-rwxr-xr-x (755) 拥有者有读、写、执行权限;所属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) 拥有者有读、写、执行权限;所属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) 所有用户都有文件读、写权限。
-rwxrwxrwx (777) 所有用户都有读、写、执行权限。
字串权限设定表示:
[ugoa...][[+-=][rwxX]...]
u:用户权限
g:组用户权限
o:其他用户权限
chmod ugo+r 所有用户追加读权限
chmod u+rw 拥有者追加读、写权限
chmod g+rx 所属组用户追加读、执行权限
chmod o-rwx 其他用户无读、写、执行权限
# 磁盘
- df -h 参看文件系统容量及挂载情况
- lsblk 查看磁盘挂载情况
- fdisk 交互式磁盘分区
-l
查看分区表参数/dev/sdx
m
查看命令操作d
删除已有分区n
创建新的分区p
查看创建分区w
应用分区信息
- sfdisk 命令式磁盘分区
-T
查看分区类型码
- mount 挂载磁盘
- umount 取消挂载
# 数据
dd 数据转换
通用语法:
dd if=path/to/input_file of=/path/to/output_file bs=block_size count=number_of_blocks
命令简介:
if=file 输入文件名,缺省为标准输入。
of=file 输出文件名,缺省为标准输出。
ibs=bytes 一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。
obs=bytes 一次写 bytes 个字节(即一个块大小为 bytes 个字节)。
bs=bytes 同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。
cbs=bytes 一次转换 bytes 个字节,即转换缓冲区大小。
skip=blocks 从输入文件开头跳过 blocks 个块后再开始复制。
seek=blocks 从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)。
count=blocks 仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。
conv=conversion[,conversion...] 用指定的参数转换文件。
conv 符号参数:
ascii 转换 EBCDIC 为 ASCII。
ebcdic 转换 ASCII 为 EBCDIC。
ibm 转换 ASCII 为 alternate EBCDIC.
block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。
unblock 使每一行的长度都为 cbs ,不足部分用空格填充。
lcase 把大写字符转换为小写字符。
ucase 把小写字符转换为大写字符。
swab 交换输入的每对字节。
noerror 出错时不停止。
notrunc 不截短输出文件。
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
fsync 在完成之前同步输出数据和元数据,这强制对输出数据和元数据进行物理写入。
/dev/zero
和/dev/null
/dev/zero
(产生字符)不产生 IO,主要的用处是用来创建一个指定长度用于初始化的空文件,向设备或文件无穷尽地写入空字符流;/dev/null
(回收站、无底洞)不产生 IO,你可以向它输出任何数据,它通吃,并且不会撑着!conv=fsync
用途:一些设备使用缓冲区和缓存来提高吞吐量和延迟性能。此命令使设备刷新其缓冲区和缓存,以便如果删除设备,则在操作标记为完成之前将数据写入设备,并将控制传递回终端提示。
# 补丁
补丁操作一般为已有文件的修改操作,通过新旧文件对比进行修改,对于新文件的增删,目前是无法通过该操作来进行的。
1、补丁生成
补丁文件是通过 diff
命令生成的,生成补丁文件的命令使用格式如下:
diff -uNr <src> <modify> > xxx.patch |
- src:源文件(目录),未进行修改的。
- modify:基于 src,根据需求对里面的文件内容修改之后结果。
命令选项:
-u
选项以统一格式创建补丁文件,这种格式比缺省格式更紧凑些-N
选项确保补丁文件将正确地处理已经创建和删除文件的情况-r
递归选项,设置了这个选项,diff 会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件
">" 是重定向符号,表示将 diff 比较的结果重定向输入到 xxx.patch
文件中(如不指定重定向,diff 的结果将打印到标准输出), xxx.patch
文件一般指定以 .patch
为后缀。
上述的补丁命令的功能就是逐个比较源文件(夹)和目标文件(夹)的所有文件,将差异信息记录到 xxx.patch
中, xxx.patch
文件也就是我们所谓的补丁文件。
2、打补丁
有了补丁文件那么就可以来进行打补丁操作了,打补丁是通过 patch 命令完成的。一般情况下,打补丁命令使用格式如下(这里只介绍了对源文件 / 文件夹进行打补丁操作):
patch -pN < xxx.patch |
xxx.patch
文件是上面 diff 命令生成的补丁文件,打补丁就是 patch 利用 diff 制作的补丁来实现源文件(夹)和目的文件(夹)的转换。这样说就意味着你可以从源文件 / 文件夹到目的文件 / 文件夹,也可以目的文件 / 文件夹到源文件 / 文件夹。一般情况下,我们都是将源文件 / 文件夹打补丁到我们修改后的目的文件 / 文件夹。
命令选项:
-pN
选项打补丁时要忽略掉第 N 层目录。
# 驱动模块加载
- lsmod 查看已加载模块
- insmod 动态加载模块
- rmmod 卸载模块
# 网络
- ping 测试网络。eg:
ping <ip/host>
其它具体网络配置使用命令,根据不同的网络工具,所使用的命令不一样,可以参考:
# other
lsusb -tv 显示 USB 设备
clear 清屏
ftpget /ftpput 文件传输的 get 及 put 操作。eg:
ftpget -u <username> -p <password> [server ip] <remote file> <local file>
ftpput -u <username> -p <password> [server ip] <local file> <remote file>
-u
指定登录名称-p
输入登录密码
通过 APT(高级软件包工具)在基于 Debian 的 Linux 系统上进行管理
- 从存储库安装软件包:
sudo apt install package-name
- 删除已安装的软件包:
sudo apt purge package-name
- 查看系统当前配置使用哪些存储库:
cat /etc/apt/sources.list
- 更新存储库的软件包:
sudo apt update
- 处理依赖:
sudo apt install -f
or 用aptitude
来代替apt
- 获取已安装软件包:
sudo apt list --installed
orsudo dpkg -l
- sudo add-apt-repository 添加新存储库
- 添加 PPA 源文件:
sudo add-apt-repository ppa:xxx
- 删除 PPA 源文件:
sudo add-apt-repository -r ppa:xxx
- 添加 PPA 源文件: