抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

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 – 文本编辑器

Vim 练级手册 Vim 实操教程(Learning Vim) | Learn VIM

文件传输

curl – 文件传输工具

语法格式

curl [参数] URL [文件名]

curl 的用法指南 - 阮一峰的网络日志

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

评论