Linux是一个开源的类Unix操作系统,广泛用于服务器、桌面、移动设备和嵌入式设备。这是一份简要的Linux操作手册,包括系统目录结构和一些常用命令。
Linux系统目录结构¶
系统启动必须
- /boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
- /etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。
- /lib:存放基本代码库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
- /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中。
指令集合
- /bin:存放着最常用的程序和指令。
- /sbin:只有系统管理员能使用的程序和指令。
外部文件管理
- /dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。
- /media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
- /mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
临时文件
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
- /lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
- /tmp:这个目录是用来存放一些临时文件的。
账户
- /root:系统管理员的用户主目录。
- /home:用户的主目录,以用户的账号命名的。
- /usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
- /usr/bin:系统用户使用的应用程序与指令。
- /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src:内核源代码默认的放置目录。
运行过程中使用
- /var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
- /proc:管理内存空间,虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。
扩展使用
- /opt:默认是空的,我们安装额外软件可以放在这个里面。
- /srv:存放服务启动后需要提取的数据(不用服务器就是空)
在Linux文件系统中有两个特殊的目录,一个用户所在的工作目录,也叫当前目录,可以使用一个点 . 来表示;另一个是当前目录的上一级目录,也叫父目录,可以使用两个点 … 来表示。
- . :代表当前的目录,也可以使用 ./ 来表示;
- … :代表上一层目录,也可以 …/ 来代表。 如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件(如:.bashrc)。即以默认方式查找时,不显示该目录或文件。
Linux系统命令行的含义¶
示例:root@app:~#
root //用户名,root为超级用户
@ //分隔符
app //主机名称
~ //当前所在目录,默认用户目录为~,会随着目录切换而变化。
# //表示当前用户是超级用户,普通用户为$。
Linux常用命令¶
文件管理¶
ls – 显示目录中文件及其属性信息¶
list
语法格式
ls [-alrt] [name...]
常用参数
- -a 显示所有文件及目录
- -r 依据首字母将文件以相反次序显示
- -A 不显示当前目录和父目录
- -R 递归显示所有子文件
- -d 显示目录自身的属性信息
- -S 依据内容大小将文件排序显示
- -i 显示文件的inode属性信息
- -t 依据最后修改时间将文件排序显示
- -l 显示文件的详细属性信息
- -X 依据扩展名将文件排序显示
- -m 以逗号为间隔符,水平显示文件信息
- -color 以彩色显示信息
cp – 复制文件或目录¶
copy
语法格式
cp [options] source dest
常用参数
- -a 功能等价于pdr参数组合
- -l 对源文件建立硬链接,而非复制文件
- -b 覆盖目标文件前先进行备份
- -p 保留源文件或目录的所有属性信息
- -d 复制链接文件时,将目标文件也建立为链接文件
- -r 递归复制所有子文件
- -f 若目标文件已存在,则会直接覆盖
- -s 对源文件建立软链接,而非复制文件
- -i 若目标文件已存在,则会询问是否覆盖
- -v 显示执行过程详细信息
mv – 移动或改名文件¶
move
语法格式
mv [options] source dest
mv [options] source... directory
常用参数
- -b 覆盖前为目标文件创建备份
- -v 显示执行过程详细信息
- -f 强制覆盖目标文件而不询问
- -Z 设置文件安全上下文
- -i 覆盖目标文件前询问用户是否确认
- -n 不要覆盖已有文件
- -u 当源文件比目标文件更新时,才执行覆盖操作
rm – 删除文件或目录¶
remove
语法格式
rm [options] name...
常用参数
- -d 仅删除无子文件的空目录
- -v 显示执行过程详细信息
- -f 强制删除文件而不询问
- -i 删除文件前询问用户是否确认
- -r 递归删除目录及其内全部子文件
参考示例
强制清空服务器系统内的所有文件
rm -rf /*
tar – 压缩和解压缩文件¶
语法格式
tar [option] 压缩包名 文件或目录名
常用参数
- -A 添加文件到已存在的压缩包
- -p 保留原来的文件权限与属性
- -P 使用绝对路径
- -c 创建新的压缩
- -t 显示压缩包的内容
- -C 解压缩到指定目录
- -u 更新压缩包内的文件
- -d 记录文件的差别
- -v 显示执行过程详细信息
- -f 指定压缩包文件
- -w 确认压缩包的完整性
- -j 使用bzip2压缩格式
- -x 从压缩包内提取文件
- -z 使用gzip压缩格式
- -m 保护文件不被覆盖
- –exclude 排除指定的文件不压缩
- -N 只将较新日期的文件保存到压缩包中
- –remove-files 操作完成后删除源文件
参考示例:
使用gzip压缩格式对指定目录进行打包操作,显示压缩过程,压缩包规范后缀为.tar.gz
tar -czvf File.tar.gz /etc
将当前工作目录内所有以.cfg为后缀的文件打包,不进行压缩
tar -cvf File.tar *.cfg
将当前工作目录内所有以.cfg为后缀的文件打包,不进行压缩,并删除原始文件
tar --cvf File.tar *.cfg --remove-files
解压指定压缩包到当前工作目录
tar -xvf File.tar
解压指定压缩包到/etc目录
tar -xvf File.tar -C /etc
查看某个压缩包内文件信息(无须解压)
tar -tvf File.tar
scp命令 – 基于SSH协议远程复制文件¶
secure copy
语法格式
scp [参数] 文件或目录名 远程服务器信息
常用参数
- -1 使用SSH协议版本1
- -l 设置宽带限制
- -2 使用SSH协议版本2
- -o 设置ssh服务选项
- -4 基于IPv4网络协议
- -P 设置远程主机的端口号
- -6 基于IPv6网络协议
- -p 保留文件的修改时间、访问时间和权限属性
- -B 使用批处理模式
- -q 静默执行模式
- -c 使用指定密钥对传输文件进行加密
- -r 递归处理所有子文件
- -C 使用压缩模式
- -S 设置加密传输时所使用的程序
- -F 设置ssh配置文件路径
- -v 显示执行过程详细信息
- -i 从指定文件中读取传输文件的密钥
参考示例
将某个本地文件复制到指定的远程主机的指定目录中
scp File.cfg 192.168.10.10:/Dir
将指定远程主机中的某个文件复制到本地家目录中
scp 192.168.10.10:/Dir/File.cfg /root
将某个本地目录复制到指定的远程主机的指定目录中
scp -r Dir 192.168.10.10:/Dir
将某个本地文件复制到指定的远程主机的指定目录中,指定要使用的传输用户身份,并保留原始文件的权限属性
scp -p File.cfg [email protected]:/Dir
pwd – 显示当前工作目录的路径¶
print working directory
语法格式
pwd [options]
常用参数:
- -L 显示逻辑路径
- –version 显示版本信息
- -P 显示实际物理地址
- –help 显示帮助信息
mkdir – 创建目录文件¶
make directories
语法格式
mdir [options] [目录]
常用参数
- -m 创建目录的同时设置权限
- -v 显示执行过程详细信息
- -p 递归创建多级目录
- -z 设置目录安全上下文
cd – 切换目录¶
change directory
语法格式:cd 参数 目录名
常用参数:
- -L 切换至符号链接所在的目录
- ~ 切换至用户家目录
- -P 切换至符号链接对应的实际目录
- … 切换至当前位置的上一级目录
- – 切换至上次所在目录
chmod – 改变文件或目录权限¶
change mode
语法格式
chmod [-cfvR] [--help] [--version] mode file...
常用参数:
- -c 改变权限成功后再输出成功信息
- –no-preserve-root 不特殊对待根目录
- -f 改变权限失败后不显示错误信息
- –preserve-root 禁止对根目录进行递归操作
- -R 递归处理所有子文件
- –reference 使用指定参考文件的权限
- -v 显示执行过程详细信息
权限设定字串(mode)
权限设定字串,格式如下:
[ugoa...][[+-=][rwxX]...][,...]
Linux/Unix 的文件调用权限分为三级: 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
其中:
- u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
- + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
- r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
符号模式
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明。
who 的符号模式表所示:
who | 用户类型 | 说明 |
---|---|---|
u | user | 文件所有者 |
g | group | 文件所有者所在组 |
o | others | 所有其他用户 |
a | all | 所有用户, 相当于 ugo |
operator 的符号模式表:
Operator | 说明 |
---|---|
+ | 为指定的用户类型增加权限 |
- | 去除指定用户类型的权限 |
= | 设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
permission 的符号模式表:
模式 | 名字 | 说明 |
---|---|---|
r | 读 | 设置为可读权限 |
w | 写 | 设置为可写权限 |
x | 执行权限 | 设置为可执行权限 |
X | 特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s | setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
t | 粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
八进制语法
文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r– | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | –x | 001 |
0 | 无 | — | 000 |
参考示例
将文件 file1.txt 设为所有人皆可读取
chmod a+r file1.txt
将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入
chmod ug+w,o-w file1.txt file2.txt
将目前目录下的所有文件与子目录皆设为任何人可读取
chmod -R a+r *
将文件 file.txt 设为所有人皆可读取、修改和执行
chmod 777 file.txt
chown – 改变文件或目录的用户和用户组¶
change owner
语法格式
chown [-cfhvR] user[:group] file...
常用参数
- -c 显示所属变更信息
- -v 显示执行过程详细信息
- -f 若该文件拥有者无法被更改也不显示错误
- -h 仅对链接文件(而非真正指向的文件)进行更改
- -P 不遍历任何符号链接
- -R 递归处理所有子文件
参考示例
改变指定文件的所属主与所属组
chown root:root File.txt
改变指定目录及其内部所有子文件的所属主与所属组
chown -R root:root /Dir
ln – 为文件创建快捷方式¶
link
语法格式
ln [参数][源文件或目录][目标文件或目录]
常用参数
- -b 为已存在的目标文件创建备份
- -s 对源文件创建软链接
- -d 允许管理员创建目录的硬链接
- -S 设置备份文件的后缀
- -f 强制创建链接而不询问
- -t 设置链接文件存放于哪个目录
- -i 若目标文件已存在,则需要用户二次确认
- -v 显示执行过程详细信息
- -L 若目标文件为软链接,找到其对应文件
- –backup 备份已存在的文件
- -n 将指向目录的软链接视为普通文件
- -P 若目标文件为软链接,直接链接它自身
- -r 创建相对于文件位置的软链接
参考示例
为指定的源文件创建快捷方式(默认为硬链接形式)
ln File1.cfg File2.cfg
为指定的源文件创建快捷方式(设定为软链接形式)
ln -s File1.cfg File2.cfg
文件编辑¶
cat – 在终端设备上显示文件内容¶
concatenate files and print
语法格式
cat [选项] [文件]
常用参数
- -A 等价于-vET参数组合
- -t 等价于-vT参数组合
- -b 显示行数(空行不编号)
- -T 将TAB字符显示为^I符号
- -e 等价于-vE参数组合
- -v 显示一些非打印字符
- -E 每行结束处显示$符号
- -n 显示行数(空行也编号)
- -s 显示行数(多个空行算一个编号)
参考示例
创建文件:将标准输入重定向到文件 filename,覆盖该文件的内容。
cat > filename
追加内容到文件:将标准输入追加到文件 filename 的末尾。
cat >> filename
连接文件:将 file1 和 file2 的内容合并到 file3 中。
cat file1 file2 > file3
显示多个文件的内容:同时显示 file1 和 file2 的内容。
cat file1 file2
查看文件的最后几行:显示文件 filename 的最后 10 行。
cat filename | tail -n 10
tail – 查看文件尾部内容¶
语法格式
tail [参数] 文件名
常用参数
- -c 设置显示文件尾部的字符数
- –pid 当指定PID进程结束时,自动退出命令
- -f 持续显示文件尾部最新内容
- –retry 当文件无权限访问时,依然尝试打开
- -n 设置显示文件尾部的行数
默认显示指定文件尾部的后10行内容
tail File.cfg
指定显示指定文件尾部的后5行内容
tail -n 5 File.cfg
持续刷新显示指定文件尾部的后10行内容
tail -f File.cfg
grep – 强大的文本搜索工具¶
global search regular expression and print out the line
语法格式
grep [options] pattern [files]
- pattern - 表示要查找的字符串或正则表达式。
- files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。
常用参数
- -b 显示匹配行距文件头部的偏移量
- -o 显示匹配词距文件头部的偏移量
- -c 只显示匹配的行数
- -q 静默执行模式
- -E 支持扩展正则表达式
- -r 递归搜索模式
- -F 匹配固定字符串的内容
- -s 不显示没有匹配文本的错误信息
- -h 搜索多文件时不显示文件名
- -v 显示不包含匹配文本的所有行
- -i 忽略关键词大小写
- -w 精准匹配整词
- -l 只显示符合匹配条件的文件名
- -x 精准匹配整行
- -n 显示所有匹配行及其行号
参考示例
在文件 file.txt 中查找字符串 “hello”,并打印匹配的行
grep hello file.txt
在文件夹 dir 中递归查找所有文件中匹配正则表达式 “pattern” 的行,并打印匹配行所在的文件名和行号
grep -r -n pattern dir/
在标准输入中查找字符串 “world”,并只打印匹配的行数
echo "hello world" | grep -c world
在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令
grep test *file
echo – 输出字符串或提取后的变量值¶
语法格式
echo [参数] 字符串或$变量名
常用参数
- -e “\a” 发出警告音
- -e “\r” 光标移至行首但不换行
- -e “\b” 删除前面的一个字符
- -e “\c” 结尾不加换行符 -n 不输出结尾的换行符
- -e “\f” 换行后光标仍停留在原来的位置
- -e “\n” 换行后光标移至行首
- -E 禁止反斜杠转义
参考示例
输出指定字符串到终端设备界面(默认为电脑屏幕)
echo LinuxCool
LinuxCool
输出某个变量值
echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin
搭配转义符一起使用,输出纯字符串内容
echo \$PATH
$PATH
搭配输出重定向符一起使用,将字符串内容直接写入文件中
echo "Hello World" > Doc.txt
搭配反引号执行命令,并将执行结果输出
echo `uptime`
16:16:12 up 52 min, 1 user, load average: 0.01, 0.02, 0.05
sed – 批量编辑文本文件¶
stream editor
语法格式
sed [-hnV][-e<script>][-f<script文件>][文本文件]
常用参数
- -e 使用指定脚本处理输入的文本文件
- -n 仅显示脚本处理后的结果
- -f 使用指定脚本文件处理输入的文本文件
- -r 支持扩展正则表达式
- -h 显示帮助信息
- -V 显示版本信息
- -i 直接修改文件内容,而不输出到终端
动作
- a:新增,a的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
- i:插入,i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)
- c:取代,c的后面可以接字串,这些字串可以取代
n1,n2
之间的行 - s:取代,可以直接进行取代,通常这个s的动作可以搭配正则表达式,例如
1,20s/old/new/g
- d:删除,因为是删除,所以d后面通常没有内容
- p:打印,将某个选择的数据印出。通常p会与参数
sed -n
一起运行
参考示例
以行为单位的新增/删除
在testfile文件的第四行后添加一行
sed -e '4a line' testfile
删除testfile的2~5行(-e可省略)
sed '2,5d' testfile
删除第 3 到最后一行
sed '3,$d' testfile
以行为单位的替换与显示
将第2-5行的内容取代成为No 2-5 number
sed '2,5c No 2-5 number' testfile
仅列出testfile文件内的第5-7行
sed -n '5,7p' testfile
数据的搜寻并显示
搜索testfile有oo关键字的行
sed -n '/oo/p' testfile
数据的搜寻并删除
删除 testfile 所有包含 oo 的行
sed '/oo/d' testfile
数据的搜寻并执行命令
搜索testfile,找到oo对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把oo替换为kk,再输出这行
sed -n '/oo/{s/oo/kk/;p;q}' testfile
最后的q是退出。
数据的查找与替换
sed的查找与替换
sed 's/要被取代的字串/新的字串/g'
将testfile文件中每行第一次出现的oo用字符串kk替换,然后将该文件内容输出到标准输出
sed -e 's/oo/kk/' testfile
g
标识符表示全局查找替换,使sed对文件中所有符合的字符串都被替换
sed -e 's/oo/kk/g' testfile
选项i使sed修改文件
sed -i 's/oo/kk/g' testfile
批量操作当前目录下以test开头的文件
sed -i 's/oo/kk/g' ./test*
多点编辑
一条sed命令,删除testfile第三行到末尾的数据,并把HELLO替换为hello
sed -e '3,$d' -e 's/HELLO/hello/' testfile
vi – 文本编辑器¶
文件传输¶
curl – 文件传输工具¶
语法格式
curl [参数] URL [文件名]
ftp – 文件传输协议客户端¶
语法格式
ftp [-dignv][主机名称或IP地址]
常用参数
- -A 使用主动模式
- -n 禁用自动登录
- -d 使用调试模式
- -p 使用被动模式
- -e 禁用命令编辑和历史记录
- -t 激活数据包追踪
- -g 关闭文件名替换
- -v 显示执行过程详细信息
- -i 关闭交互模式
常用动作
动作 | 备注 | 动作 | 备注 |
---|---|---|---|
ascii | 使用ASCII文本格式 | delete | 删除指定文件 |
mdelete | 删除一批文件 | pwd | 显示当前工作目录 |
bell | 完成传输后发出提醒音 | dir | 显示指定目录中的文件列表 |
mget | 下载一批文件到本地 | quit | 退出FTP控制会话 |
binary | 使用二进制格式 | get | 下载文件到本地 |
mkdir | 创建目录文件 | rename | 更改文件名称 |
bye | 退出FTP控制会话 | help | 显示帮助信息 |
mput | 上传一批文件到服务器 | rmdir | 删除指定目录 |
cd | 切换到指定目录 | lcd | 切换本地工作目录 |
open | 创建一个新的连接 | status | 显示FTP服务状态 |
cdup | 切换到上级目录 | ls | 显示指定目录中的文件列表 |
prompt | 使用交互提示模式 | system | 显示服务器主机系统类型 |
chmod | 更改文件权限 | macdef | 定义宏命令 |
put | 上传文件到服务器 |
参考示例
使用匿名模式,连接到指定的远程FTP服务器
ftp 192.168.10.10
从FTP服务器中下载指定的文件到本地目录
ftp> get File.txt
从本地目录上传文件到FTP服务器中
ftp> put File.txt
系统管理¶
find – 根据路径和条件搜索指定文件¶
语法格式
find [路径] [匹配条件] [动作]
参数说明
路径是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
匹配条件是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。
最常用的匹配条件:
- -name pattern:按文件名查找,支持使用通配符*和?。
- -type type:按文件类型查找,可以是f(普通文件)d(目录)、l(符号链接)等。
- -size [+-]size[cwbkMG]:按文件大小查找,支持使用+或-表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
- 按修改时间查找,支持使用+或-表示在指定时间前后,零表示在当前时间点上修改或访问过的文件。
- -amin n:查找在 n 分钟内被访问过的文件。
- -atime n:查找在 n*24 小时内被访问过的文件。
- -cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
- -ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。
- -mmin n:查找在 n 分钟内被修改过的文件。
- -mtime n:查找在 n*24 小时内被修改过的文件。
- -user username:按文件所有者查找。
- -group groupname:按文件所属组查找。
动作是可选参数,用于对匹配到的文件执行操作,比如删除、复制等。
参考示例
查找当前目录下名为file.txt的文件
find . -name file.txt
将当前目录及其子目录下所有文件后缀为.c的文件列出来
find . -name "*.c"
将当前目录及其子目录中的所有文件列出
find . -type f
查找/home目录下大于1MB的文件
find /home -size +1M
查找/var/log目录下在7天前修改过的文件
find /var/log -mtime +7
ps – 显示进程状态¶
语法格式
ps [options]
常用参数
- -a 显示所有进程信息
- -t 显示属于指定终端主机的程序状态
- -c 不显示程序路径
- -T 显示当前终端主机下的所有程序
- -d 不显示阶段作业程序
- -u 使用用户为主的格式来显示程序状态
- -e 显示环境变量信息
- -U 显示属于指定用户的程序状态
- -f 用ASCII字符显示树状结构
- -v 使用虚拟内存的格式显示程序状态
- -g 显示所有程序及其所属组的程序
- -w 使用宽阔的格式显示程序状态
- -h 不显示标题列信息
- -x 不区分终端主机
- -H 使用树状结构展示程序间的相互关系
- -X 使用旧式登录格式显示程序状态
- -j 使用工作控制格式显示程序状态
- –cols 设置每列的最大字符数
- -l 使用详细格式显示程序状态
- –headers 重复显示标题列
- -p 指定程序识别码并显示该程序的状态
- -r 仅显示终端主机正在执行中的程序
- –info 显示排错信息
- -s 使用程序信号格式显示程序状态
- –lines 设置显示画面的列数
- -S 显示包括已中断的子程序的状态
au(x)输出格式
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 行程拥有者
- PID: pid
- %CPU: 占用的CPU使用率
- %MEM: 占用的内存使用率
- VSZ: 占用的虚拟内存大小
- RSS: 占用的内存大小
- TTY: 终端的次要装置号码
- STAT: 该行程的状态:
- D: 无法中断的休眠状态 (通常是IO进程)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的内存分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有内存分页分配并锁在内存内
- START: 行程开始时间
- TIME: 执行的时间
- COMMAND: 所执行的指令
参考示例
查找指定进程格式
ps -ef | grep 进程关键字
显示root进程用户信息
ps -u root
显示所有进程信息,连同命令行
ps -ef
kill – 杀死进程¶
语法格式
kill [options] <PID>
常用参数
- -a 不限制命令名与进程号的对应关系
- -p 不发送任何信号
- -l 显示系统支持的信号列表
- -s 设置向进程发送的信号
基本用法
终止进程:默认情况下,kill命令发送SIGTERM(信号15),这可以请求进程终止。如果进程没有捕获这个信号,它将被终止。kill PID
其中PID是进程的ID。
发送指定信号:通过-s选项可以发送指定的信号。kill -s SIGNAL PID
例如,发送 SIGKILL(信号9)将立即结束进程,不能被忽略或捕获。kill -9 PID
使用kill -l
命令列出所有可用信号。最常用的信号是:
- SIGKILL(信号9):立即结束进程,不能被捕获或忽略。
- SIGTERM(信号15):正常结束进程,可以被捕获或忽略。
- SIGSTOP(信号19):暂停进程,不能被捕获、忽略或结束。
- SIGCONT(信号18):继续执行被暂停的进程。
- SIGINT(信号2):通常是Ctrl+C产生的信号,可以被进程捕获或忽略。
参考示例
终止 PID 为 1234 的进程
kill 1234
强制终止 PID 为 1234 的进程
kill -9 1234
向 PID 为 1234 的进程发送 SIGSTOP
kill -s SIGSTOP 1234
网络通讯¶
ssh – 安全的远程连接服务¶
语法格式
ssh [options] [user@]hostname [command]
参数说明
- [user@]hostname:要连接的远程主机的用户名和主机名。
- [command]:可选的在远程主机上执行的命令。
常用参数
- -l user:指定要登录的用户。
- -p port:指定连接到远程主机的端口号,默认是22。
- -i identity_file:指定身份验证文件(私钥文件)。
- -v:详细模式,可以显示调试信息。
- -C:启用压缩。
- -N:不执行远程命令,只进行端口转发。
- -f:后台运行。
- -L local_port:remote_host:remote_port:本地端口转发。
- -R remote_port:local_host:local_port:远程端口转发。
- -D [bind_address:]port:动态应用程序级端口转发。
参考示例
连接到远程主机
ssh [email protected]
指定端口连接
ssh -p 2222 [email protected]
使用身份验证文件
ssh -i ~/.ssh/id_rsa [email protected]
在远程主机上执行命令
ssh [email protected] ls -la
netstat – 显示网络状态¶
语法格式
netstat [参数]
常用参数
- -a 显示所有连接中的接口信息
- -n 直接使用IP地址,而不是域名
- -A 设置网络连接类型
- -N 显示网络硬件外围设备的符号链接名称
- -c 持续显示网络状态
- -o 显示计时器数据信息
- -C 显示路由配置信息
- -p 显示正在使用接口的程序识别码和名称
- -F 显示路由缓存信息
- -r 显示路由表信息
- -g 显示多重广播功能群组成员名单
- -s 显示网络工作信息统计表信息
- -h 显示帮助信息
- -t 显示TCP传输协议的连线状态
- -i 显示网络界面信息表单
- -u 显示UDP传输协议的连线状态
- -l 仅显示正在监听的服务状态
参考示例
显示系统网络状态中的所有连接信息
netstat -a
显示系统网络状态中的UDP连接信息
netstat -nu
显示系统网络状态中的UDP连接端口号使用信息
netstat -apu
找到某个服务所对应的连接信息
netstat -ap | grep ssh
ping – 测试主机间网络连通性¶
语法格式
ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
常用参数
- -d 使用Socket的SO_DEBUG功能。
- -c <完成次数> 设置完成要求回应的次数。
- -f 极限检测。
- -i<间隔秒数> 指定收发信息的间隔时间。
- -I<网络界面> 使用指定的网络接口送出数据包。
- -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
- -n 只输出数值。
- -p<范本样式> 设置填满数据包的范本样式。
- -q 不显示指令执行过程,开头和结尾的相关信息除外。
- -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
- -R 记录路由过程。
- -s<数据包大小> 设置数据包的大小。
- -t<存活数值> 设置存活数值TTL的大小。
- -v 详细显示指令的执行过程。
- -w
在 deadline 毫秒后退出。 - -W
在等待 timeout 毫秒后开始执行。
参考示例
测试与指定域名之间的网络连通性(需手动按下Ctrl+C组合键结束命令)
ping www.spcookie.top
测试与指定主机之间的网络连通性,发送请求包限定为4个
ping -c 4 192.168.10.10
条评论