Linux 命令
1.ls
列出目录的内容
命令:
ls 参数 目录(无目录,就是当前目录)
参数:
ls -l # 每一行列出一个文件,并且显示文件的权限等内容
ls -a # 列出目录下的全部内容(包含隐藏文件 . )
ls -d # 列表当前目录
ls -t # 按修改时间排序,最新优先
ls -r # 逆序排列
ls -h # 显示目录下的文件大小以K、M、G等单位显示文件大小
ls -R # 递归显示当前目录子目录的全部内容
ls -S # 目录下按照文件大小排序,从大到小
ls -i # 显示文件的inode号
2.cd
进入某个文件目录作为工作目录,切换目录
命令:
cd 目录
其他:
cd / # 进入文件根目录
cd ~ # 进入当前用户的家目录
cd .. # 返回上一级目录
3.pwd
查看当前所在目录的路径
命令:
pwd
告知你当前在那个完整目录
4.cat
查看当前文件中内容是什么
命令:
cat 参数 文件路径
参数:
cat -n # 显示行号
cat -b # 显示行号,但不对空白行显示行号
cat -E # 在每行结束处显示 $
5.vi
文本编辑器,对文件进行编辑
命令:
vi 文件路径
6.cp
拷贝命令
命令:
cp 需要拷贝文件/文件夹 拷贝到新的目录/
参数:
cp -r # 对文件夹进行拷贝
cp -p # 保留文件原属性,包含权限以及属主属组
cp -i # 在拷贝前,提示确定,防止重名覆盖
7.mv
将源文件重命名为目标文件,或将源文件移动至指定目录。
命令:
mv 源文件名称 新名称
mv 源文件名称 新目录
参数:
mv -u # 仅在目标目录中不存在同名文件或该文件更新时才执行移动操作
mv -i # 在移动前,提示确定,防止重名覆盖
8.mkdir
创建文件目录
命令:
mkdir 参数 文件目录名称
参数:
mv -p # 创建目录是会创建上层目录,及时存在也不会报错
9.touch
创建文件
命令:
touch 参数 文件 # 如果文件不存在创建,如果文件存在更新访问时间和修改时间戳
参数:
touch -d "YYYY-MM-DD HH:MM:SS" 文件 # 将文件的访问时间和修改时间设置为某个特定时间
10.less
less 与 more 命令类似,但可以通过翻页键查看上下页的内容
查看文件的命令
less不会一次性将整个文件加载到内存中,而是按需逐行加载文件内容。这种按需加载的方式使得less命令可以有效地处理非常大的文件,而不会占用大量的内存资源。
命令:
less 文件
其他:
向后搜索:
按"/"键,然后输入你想搜索的内容,按Enter键开始向后搜索。
向前搜索:
按"?"键,然后输入你想搜索的内容,按Enter键开始向前搜索。
跳转到文件开头:
按"g"键。
跳转到文件结尾:
按"G"键。
退出less:
按"q"键。
11.tail
输出文件的末尾部分
命令:
tail 文件 # 默认显示最后10行
参数:
tail -n number # 显示最后 number行
tail -f 文件 # 使用-f 可以阻塞,tail会不停的读取最新的内容 因此有实时监控的作用
12.more
查看文件的命令,与less相似,不过,more命令相对简单,功能较少
more命令在执行时会将整个文件的内容一次性加载到内存中
命令:
more 文件
其他:
向下滚动一行:
按Enter键滚动一行内容。
向下滚动一屏:
按空格键滚动一屏内容。
退出more:
按"q"键。
13.chmod
修改文件/文件夹权限命令,这个权限针对属主属组和其他用户
# 常见权限分为
rwx 用数字表示 r:4 w:2 x:1
-rw-r--r--
- 第一个-代表当前文件是什么类型 d是文件夹 -普通文件 l软连接 c 字符设备文件 ..
rw- 属主的权限
r-- 属组的权限
r-- 其他的用户权限
# 特殊权限
suid:出现在属主的x权限上
x存在:s表示 rws------
x不存在:S表示 rwS------
数字表示:4 # 如果要设置权限 4777 4放在最前面
作用:
# 用于可执行文件
当设置suid这个特殊权限,那么无论是谁或者哪个用户,只要执行当前命令,那么就是属主这个用户权限执行命令。
# 假设rm命令设置了这个权限,那么其他用户就可以想怎么删除就可以删除,搞破坏
-rwxr-xr-x 1 root root 62872 Nov 17 2020 /usr/bin/rm
sgid:出现在属组上的x位置
x存在:s表示 ---rws---
x不存在:S表示 ---rwS---
数字表示:2 # 如果要设置权限 2777 2放在最前面
作用:
# 用于可执行文件
理念与suid的相同,只不过是以数组权限的方式执行命令
sticky:出现在其他用户x位置
x存在:t表示 ------rwt
x不存在:T表示 ------rwT
数字表示:1 # 如果要设置权限 1777 1放在最前面
作用:
粘滞位特殊权限,可以让目录任何人都有读写执行权限,但是当删除移动等其他操作,只能操作自己创建的文件或者文件夹,/tmp命令就具有这个特殊权限
# 权限操作对象
u 属主权限
g 属组权限
o 其他权限
a 所有用户(包括以上三种
比如:chmod a+x xx.log # 对当前文件添加一个执行权限,并且全有用户都有
# 权限设置
+ 增加权限,在原有基础上
- 取消权限,在原有基础上
= 设置唯一权限
比如:chmod a+x xx.log # 对当前文件添加一个执行权限,并且全有用户都有
# 关于文件与文件夹rwx权限的区别
文件 r=读 w=写 x=可执行
文件夹 r=查看文件夹下的内容 w=在当前文件夹下可以创建删除文件/文件夹 x=能否进入文件夹
-rw-r--r-- 1 root root 0 Jan 25 10:37 dmesg.old
rw- 属主
r-- 属组
r-- 其他
# 关于数字代表特殊权限
0777
0 代表特殊权限 suid:4 sgid:2 sticky:1
7 代表属主的rwx
7 代表数组的rwx
7 代表其他用户rwx
命令:
chmod 参数 文件
参数:
chmod -R # 以递归方式更改所有的文件及子目录
案例:
chmod 777 123.log # 对当前文件设置rwx权限
chmod 7777 123.log # 对当前文件设置rwx权限包含特殊权限
chmod u+x 123.log # 对属主设置执行权限
chmod g+w 123.log # 对属组设置读的权限
chmod u-x 123.log # 对属主取消执行权限
chmod g-w 123.log # 对属组取消读的权限
# 特殊权限
chmod u+s 123.log # 对当前文件设置特殊权限 suid
chmod g+s 123.log # 对当前文件设置特殊权限 guid
chmod o+t 123.log # 对当前文件设置特殊权限 sticky
14.chown
修改文件的属主与数组权限
命令:
chown 属主.属组 文件夹/文件目录
chown 属主:属组 文件夹/文件目录
chown 属主id:属组id 文件夹/文件目录
chown :属组id 文件夹/文件目录 # 修改属组的权限
chown 属主id: 文件夹/文件目录 # 修改属主的权限
参数:
chown -R 递归这是属主与属组 # 会将当前这个文件夹递归设置属主与属组
15.diff
是一个用于比较两个文件的命令,常用于查找文件之间的差异
命令:
diff 参数 文件1 文件2 ...
参数:
diff -u 统一格式显示不同
diff -r 递归地比较目录及其子目录中的文件
diff -d 仅显示文件是否不同,而不显示具体差异
diff -i 忽略大小写的不同
diff -w 忽略空格字符的不同
diff -B 忽略空白的不同
diff -c 以上下文格式显示不同之处
# u 参数与 c 参数不能同时使用
diff -uiwB
diff -ciwB # 建议使用当前参数组合比较直观显示上下文的差异
diff -d
16.dd
是一个Linux/Unix系统中用于复制文件和转换文件的命令。它可以用于创建镜像文件、复制数据以及执行各种类型的数据转换。
命令:
dd 参数
参数:
if=input_file:指定输入文件,即来源文件。
of=output_file:指定输出文件,即目标文件。
bs=bytes:设置每次读写的块大小,以字节为单位。
count=n:设置要复制的块数或数据大小,通常与 bs 参数一起使用。
skip=n:跳过输入文件的前 n 个块后再开始复制。
seek=n:在输出文件中跳过 n 个块后再开始复制。
status=progress:显示复制进度信息。
conv=convert_option:对数据进行转换,如conv=ucase将小写字母转换为大写字母。
conv=ucase:将输入文件中的小写字母转换为大写字母。
conv=lcase:将输入文件中的大写字母转换为小写字母。
conv=block:使用块设备方式进行输入/输出。
conv=unblock:取消块设备方式进行输入/输出。
conv=ascii:将不可打印字符转换为 ? 字符。
conv=ebcdic:将 ASCII 字符转换为 EBCDIC 字符集。
conv=swab:交换每对输入字节的顺序。
用法:
dd if=/目录/来源文件 of=/目录/目标文件 # 拷贝的功能
dd if=/dev/urandom of=/目录/目标文件 bs=1M count=1 # 设置生成随机数据
bs=1M count=1 也就是生成一个随机1M的文件数据(bs*count)
dd if=/dev/urandom of=/目录/目标文件 bs=1M count=1024 # 生成一个1G的随机文件数据
bs=1M count=1024 (bs*count)
17.ln
设置软连接,类似与windows快捷方式,创建硬链接
软连接与硬链接什么区别:
# 每个文件都存在一个inode值(可以理解为是linux下文件的标识)通过这个号码可以唯一地找到对应的文件或目录
作用:
1.存储文件的各种属性,权限,日期等等
2.由于文件系统查找文件时可以直接通过inode号码,而不需要遍历整个目录树,因此可以提高文件系统的访问速度
理解:
这个inode的值 记录了文件或者文件夹的基础信息的一个对象
1.硬链接:
ln /opt/123.log /tmp/123.log # 设置一个硬链接
1.这个两个文件的inode是相同,但是名字不同罢了
2.文件的属性中硬链接数量相同 = 2 ,当删除一个时,硬链接就会-1
3.当对文件/opt/123.log 写入内容时,/tmp/123.log 也会有相同内容
确缺点:
1.硬链接无法对文件夹进行操作,硬链接无法对目录(文件夹)进行创建的主要原因是防止系统中出现循环的链接结构,从而导致文件系统出现混乱甚至崩溃的问题
2.无法跨分区,因为每一个分区中都以自己的inode系统,每一个inode类似一个数据库的主键,无法拿A数据库的主键 到B数据库使用
2.软连接
ln -s /opt/123.log /tmp/123.log # 设置软连接
软连接类似于windows的一个快捷方式,可以跨分区创建,跨设备创建,并且文件夹也可以创建
当创建一个软连接时,本质上它们是不同的inode号码,原文件/文件夹是一个inode 软连接是一个inode。
命令:
ln 参数 源文件 目标文件
参数:
ln -s # 设置软连接
18.rm
删除文件和文件夹命令
命令:
rm 参数 路径/文件
参数:
-r 递归删除,对文件路径下的全部内容删除
-f 不提示确认,直接强制删除
19.zip
是一个压缩解压缩命令,压缩文件的后缀为 zip文件
命令:
zip 参数 压缩.zip 被压缩1 被压缩2
命令:
-c 给压缩文件加注释
-m 压缩完毕后,删除源文件
-q 运行时不显示信息处理信息
-r 处理指定目录和指定目录下的使用子目录,递归压缩
-b <目录> 指定压缩到的目录
zip -rq var_log.zip /var/log/ # 压缩文件夹,并且不显示注释
zip -rq -b /tmp var_log.zip /var/log/ # 压缩文件夹,并且将文件压缩到/tmp
20.unzip
对zip包的解压命令
命令:
unzip 参数 xx.zip
参数:
-l # 列出zip包中的压缩内容,不解压
-d # 指定解压到指定目录
unzip /opt/xxx.zip -d /tmp/ # 将zip解压到/tmp下
21.tar
对tar.gz包进行解压的和压缩的命令
命令:
tar 参数 xx.tar.gz xx1 xx2
命令:
-c 创建一个归档文件
-v 打印出压缩或者解压过程
-f 指定解压或者压缩的名称
-x 解压归档文件
-z 通过 gzip 过滤归档
-t 列出归档的内容
tar -cvzf xx.tar.gz file1 file2 # 创建压缩文件通过gzip方式
tar -xvzf xx.tar.gz # 解压缩文件,通过gzip访问
22.wc
统计文件中的字符或者行数
命令:
wc 参数 文件 # 显示 行数 单词数 字节数
参数:
wc -l # 显示行数
wc -w # 显示单词数
wc -c # 显示字节数
23.stat
显示文件的详细信息,包含权限,使用者 大小 修改时间
命令:
stat 参数 文件/文件夹
参数:
-c 指定输出模式
stat -c '%n' # 文件名称
stat -c '%s' # 文件大小
stat -c '%a' # 权限
stat -c '%x' # 最后访问时间
stat -c '%y' # 最后修改时间
stat -c '%z' # 最后状态修改时间
stat -c '%U' # 用户
stat -c '%G' # 属组
stat -c '%u' # 用户id
stat -c '%g' # 属组id
stat -c '%i' # inode号
root@abcacb:~$ stat 123.log
File: ‘123.log’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 1181267 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-03-22 16:53:43.864483693 +0800
Modify: 2024-03-22 16:53:43.864483693 +0800
Change: 2024-03-22 16:53:43.864483693 +0800
Birth: -
输出内容说明:
File:文件名称
Size:大小(字节) # 文件最小为4Kb,也就是1block的大小
Blocks:块大小 # 1个块的大小为4k=4096字节
IO Block:IO 块 (4096字节 4kb)
Links:硬链接数
Inode:inode值
regular empty file:文件类型
Device:设备
Access:权限
Uid:属主
Gid:属组
Access:访问时间 # 只要访问了就会变化
Modify:修改时间 # 只要文件内容变化就会变化
Change:状态改变时间 # 这个时间会根据访问时间与修改时间而变化,也就是说只要状态发生变化就会修改,改名,修改权限,访问,设置属主属组,删除写入新内容
24.uptime
显示当前的服务器的运行时间和cpu负载情况
命令:
uptime # 无参数
17:14:14 up 21 days, 2:30, 1 user, load average: 0.03, 0.02, 0.05
17:14:14 # 当前系统时间
21 days 2:30 # 自系统启动以来,运行了多久 21天2个小时30分钟
1 user # 当前登录系统的用户数
load average: 0.03, 0.02, 0.05 # 当前机器cpu负载 1 5 15 分钟的的情况
25.uname
用于显示操作系统信息,例如内核版本、主机名、处理器类型等
命令:
uname 参数
参数:
-a # 显示全部的内容,包括内核名称 版本 架构 操作系统等等
-m # 显示系统架构
-s # 显示内核
-r # 显示内核版本
-n # 显示主机名称
26.free
用于对内存资源的查看
命令:
free 参数
参数:
-b:以字节为单位显示内存使用情况
-k:以千字节为单位显示内存使用情况
-m:以兆字节为单位显示内存使用情况
-g:以吉字节为单位显示内存使用情况
-h:以人类可读的格式显示内存使用情况(例如,GB、MB 等)
-t:显示总计行,包括物理内存、交换空间和未使用的内存总量
total used free shared buff/cache available
Mem: 3.6G 227M 1.3G 544K 2.1G 3.1G # 内存
Swap: 0B 0B 0B # 交换内存
total 总计内存,实际使用+没有使用的内存总和
used 已用内存 ,已经被系统使用的内存
free 剩余内存,没有被系统占用的内存
shared 共享内存
buff/cache 用于缓存的内存量,包括用于存储文件系统缓存的内存和用作缓冲区的内存。
available 估计可用的内存量,表示系统当前可供进程使用的可用内存总量。
27.shutdown
命令用于关闭或重新启动计算机系统,当前命令必须是root用户才能使用
命令:
shetdown 参数
常用:
shutdown -h now:立即关闭系统。
shutdown -h +10:10分钟后关闭系统。
shutdown -r now:立即重新启动系统。
shutdown -r +5 "系统将在5分钟后重启,请保存工作":5分钟后发送警告消息并重新启动系统。
28.apt
apt是一个用于管理软件包的命令行工具,通常用于Debian和基于Debian的发行版(如Ubuntu)
命令:
apt
参数:
apt update:更新本地软件包列表,以获取最新的软件包信息。
apt upgrade:升级系统中已安装的所有软件包到最新版本。
apt install <package>:安装特定的软件包。
apt remove <package>:移除特定的软件包。
apt search <keyword>:搜索软件包。
apt list:列出系统中所有可用的软件包。
apt autoremove:自动移除不再需要的依赖软件包。
apt full-upgrade:升级系统中的所有软件包,处理依赖关系更加智能。
29.yum
基于RPM的Linux发行版(如CentOS、Fedora等)中用于管理软件包的命令行工具
命令:
yum 参数
参数:
yum update:更新系统中所有已安装软件包到最新版本。
yum install <package>:安装特定的软件包。
yum remove <package>:移除特定的软件包。
yum search <keyword>:搜索软件包。
yum list:列出系统中所有可用的软件包。
yum upgrade:升级系统中所有已安装的软件包,同时也会升级系统内核。
yum clean packages:清理已下载的软件包缓存。
yum history:查看yum操作历史记录。
30.sudo
是一种在类Unix操作系统中允许普通用户以超级用户的权限来运行特定命令的工具。通过使用sudo,普通用户可以在不知道超级用户密码的情况下执行需要特权的任务
命令
sudo 其他命令
sudo vim 123.log # 提权可以编辑123.log
参数:
-u 使用什么用户执行命令
sudo -u 用户 命令
-s 打开一个新的shell
-i 以超级管理员启动一个shell
-I 列出当前用户可以执行的命令
-k 在一段时间后失效密码验证。默认情况下,sudo会在一段时间内记住用户密码,使用-k选项会使其立即失效,下次使用时需要重新验证密码。
使用sudo命令需要在配置文件中配置/etc/sudoers
www ALL=(ALL) ALL NOPASSWD: ALL
第一个 ALL 表示该用户可以在任何终端运行命令
(ALL) 表示该用户可以以任何用户身份运行命令
第二个 ALL 表示该用户可以运行任何命令
www ALL=(ALL) NOPASSWD: ALL
NOPASSWD: ALL:表示允许特定用户或用户组在执行 sudo 命令时无需输入密码即可执行任何命令
31.du
获取文件/路径的下的文件总的大小
命令:
du 文件夹/文件
参数:
-h 以人类可读的方式显示大小 1K 1M ...
-s 仅显示总计的使用大小,不对子目录进行统计
-a 显示所有的文件大小,包含隐藏文件
常用方式
du -sh
32.df
查看磁盘使用情况
命令:
df 参数
参数
-h 以人类可读的方式显示大小 1K 1M ...
-T 显示文件系统
-i 显示inode使用情况
-P 显示磁盘使用情况
33.lsblk
用于列出块设备(如硬盘、固态硬盘等)的信息,包括设备名称、大小、挂载点等。你可以在终端输入 lsblk 命令来查看系统中所有块设备的信息
命令:
lsblk
参数:
-a 显示所有设备包含回环设备
-l 显示顶层的设备不显示分区
-f 显示文件系统类型
-p 显示全路径设备名称
34.blkid
命令用于显示块设备的文件系统类型和 UUID 等信息
命令:
blkid
参数:
-p 显示设备的完整路径
-o 格式话输出内容
value, device, offset, type, label, uuid 和 none
blkid -p /dev/sda
blkid -o value /dev/sda
35.date
用于显示系统的时间日期
命令:
date 参数
参数:
%F 显示年月日
%T 显示时分秒
%Y 显示年
%m 显示月
%d 显示日
%H 显示时
%M 显示分
%S 显示秒
%u 显示当月的星期数 一共有几个星期
hwclock 为硬件时钟设置系统时间
data "+%Y%m%d%H%M%S" 格式输出显示年月日时分秒
date +%Y%m%d #显示当天年月日
date +%Y%m%d --date="+1 day" #显示后一天的日期
date +%Y%m%d --date="-1 day" #显示前一天的日期
date +%Y%m%d --date="-1 month" #显示上一月的日期
date +%Y%m%d --date="+1 month" #显示下一月的日期
date +%Y%m%d --date="-1 year" #显示前一年的日期
date +%Y%m%d --date="+1 year" #显示下一年的日期
date -d "YYYY-MM-DD HH:MM:SS" +%s # 将日期转换为时间戳
36.hostname
显示与设置主机名
命令
hostname
hostname # 显示主机名
hostname 新主机名 # 设置主机名
37.fdisk
用于磁盘分区的命令行工具
命令:
fdisk
参数
-l # 列出全部的磁盘分区情况
命令行:
fdisk 磁盘(/dev/sda) # 打开指定磁盘进行分区
m 帮助信息
n 创建分区
d 删除分区
p 显示分区
w 保存并退出
q 退出
38.mount
用于将文件系统指定到挂载点上
命令:
mount 挂载的设备或者分区名称 挂载点
参数:
-l 列出全部的挂载文件系统
-t 指定文件系统类型
-o 挂载选项比如读写权限
-t 参数:
ext2:第二版的Linux ext文件系统。
ext3:第三版的Linux ext文件系统,支持日志功能。
ext4:第四版的Linux ext文件系统,提供更好的性能和特性。
xfs:SGI开发的高性能日志文件系统。
ntfs:Windows NT文件系统。
vfat:用于FAT文件系统(如FAT32)。
iso9660:用于光盘文件系统。
nfs:网络文件系统,用于网络共享文件系统挂载。
cifs:Common Internet File System,用于Windows网络共享挂载。
-o 参数
rw:以读写方式挂载文件系统(默认为读写)。
ro:以只读方式挂载文件系统。
noexec:不允许在文件系统上执行可执行文件。
nosuid:禁止设置setuid权限位。
nodev:禁止在文件系统上创建设备文件。
exec:允许在文件系统上执行可执行文件。
suid:允许设置setuid权限位。
dev:允许在文件系统上创建设备文件。
uid=value:设置文件系统的所有者用户ID。
gid=value:设置文件系统的所有者组ID。
umask=value:设置文件和目录的默认权限掩码。
# 这种挂载的前提是提前设置了/dev/sda的文件系统
mount /dev/sda /data # 将设备/dev/sda 挂载到/data目录
39.umount
用于卸载已经挂载的文件系统
命令:
umount 卸载设备名或者挂载点
40.systemctl
系统和服务的命令行工具systemd 是一种系统和服务管理器,用于在 Linux 系统上启动、停止和管理系统进程、服务和套接字。
命令:
systemctl 参数 服务
参数:
start 启动服务
stop 关闭服务
restart 重启服务
status 查看服务状态
enable 开启自启
disable 关闭开启自启
systemctl list-units --type=service # 列出正在运行的服务
journalctl -b # 查看系统启动日志,服务的错误日志
41.vmstat
inux 系统性能分析工具,用于查看系统的虚拟内存、进程、CPU 和 I/O 等信息
命令:
vmstat 参数
参数:
vmstat # 显示系统整体的统计信息,包括内存、交换空间、进程、CPU 和块设备
-s # 统计内存相关的信息
-a # 显示非活跃于活跃内存信息
-d # 显示磁盘相关的信息
-f # 显示从系统启动至今的fork数量
-p # 指定分区显示冲击信息
-S # 以K M 显示
-S k or K -S M or m # 分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
vmstat 2 # 每2秒显示一下统计信息
vmstat 1 5 # 每隔一秒输出一次统计信息,共输出5次。
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 3364544 2108 191172 0 0 15 7 37 50 0 0 100 0 0
42.echo
终端输出文本命令
命令:
echo 输出内容
参数:
-n 不换行输出
-e 允许特殊字符串进行转义 比如:\n
43.history
查看输出命令历史,最大1000条
命令:
history
参数:
-c 清除输出的命令历史
-w 会将命令历史写入到历史文件中
44.passwd
设置用户的登录密码
命令:
passwd 用户名
参数:
-l 锁定账户,防止用用户登录
-u 解锁用户账户,可以登录
-d 使用账户无密码,允许账户无密码登录 # 在操作系统上,如果使用ssh就需要密码
-S 显示密码的信息,例如密码过期信息
-e 强制用户在下次登录时立即更改密码 # ssh登录是才会进行修改密码
非交互式修改密码的方式
echo "新密码" | passwd --stdin 用户名
45.usermod
用户修改
命令:
usermod 参数 用户名
参数:
-c:为用户账户添加备注信息。
-d:修改用户的家目录路径。
-g:将用户添加到指定的用户组。
-l:修改用户的登录名称。
-u:修改用户的用户ID。
-G:设置用户所属的附加用户组列表。
-a:将用户添加到附加用户组而不是覆盖现有的用户组。
-s:修改用户的默认shell。
46.useradd
添加用户
命令:
useradd 参数 用户名
参数:
-c 为用户账户添加备注信息。
-d 设置用户的目录
-g 设置初始用户组 id/名称
-u 设置用户的特定uid
-s 指定登录的shell解释器
-m 不设置用户的家目录
不允许登录用户
useradd -m -s /bin/nologin 用户名
47.userdel
删除用户
命令:
userdel 参数 用户名
参数:
-r 删除用户账户,以及家目录
-f 强制删除用户,即使用户登录
48.groupadd
用户组添加
命令:
groupadd 参数 组名
参数:
-g 设置用户组gid
-r 创建一个系统用户组
-o 创建一个非唯一gid的用户组
-p 设置用户组密码
49.w
命令用于显示当前系统上登录用户的相关信息
命令:
w
50.id
查看用户的uid gid等信息
命令:
id 用户名
51.ssh
用户sshd服务登录命令
命令:
ssh 用户@ip
参数:
-p 指定sshd 的登录端口
52.top
用于查看系统资源占用情况的命令,可以实时显示系统中各个进程的资源占用情况,包括CPU利用率、内存占用情况等
命令:
top
指令:
z 切换颜色模式
1. 切换cpu显示模式
m 内存显示模式,以内存使用量进行排序
t 按照运行时间排序
P 按照cpu排序
u 根据输出的用户查看用户的进程
# 命令显示:
top - 02:28:04 up 57 min, 1 user, load average: 0.00, 0.01, 0.05 # 命令于uptime显示的内容相同
Tasks: 125 total, 1 running, 124 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861288 total, 3347364 free, 306680 used, 207244 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 3324900 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
710 root 20 0 272992 4744 3608 S 0.3 0.1 0:03.40 vmtoolsd
Tasks: 125 total, 1 running, 124 sleeping :
进程情况一共有125个 1个在执行 124个在睡眠
0 stopped, 0 zombie :
0进程在停止 0个僵尸进程
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu(s):显示了CPU的使用情况。
0.0 us:表示用户空间程序占用CPU的比例。
0.0 sy:表示系统内核占用CPU的比例。
0.0 ni:表示用户进程以调整过优先级的方式占用CPU的比例(nice值)。
100.0 id:表示CPU空闲的比例。
0.0 wa:表示CPU等待I/O操作完成的比例。
0.0 hi:表示硬中断(Hardware IRQ)占用CPU的时间比例。
0.0 si:表示软中断(Software Interrupts)占用CPU的时间比例。
0.0 st:表示被虚拟化程序(如虚拟机)偷取的CPU时间。
KiB Mem : 3861288 total, 3347364 free, 306680 used, 207244 buff/cache
KiB Mem:表示物理内存(RAM)的使用情况。
3861288 total:表示系统总共的物理内存大小为 3861288 KiB。
3347364 free:表示当前可用的空闲内存大小为 3347364 KiB。
306680 used:表示当前已被使用的内存大小为 306680 KiB。
207244 buff/cache:表示被用作缓存的内存大小为 207244 KiB。这部分内存既包括用于文件系统缓存的部分,也包括用于缓冲输入/输出(I/O)操作的部分。
KiB Swap: 2097148 total, 2097148 free, 0 used. 3324900 avail Mem
KiB Swap:表示交换空间(swap)的使用情况。
2097148 total:表示系统总共的交换空间大小为 2097148 KiB。
2097148 free:表示当前可用的空闲交换空间大小为 2097148 KiB。
0 used:表示当前已被使用的交换空间大小为 0 KiB。
3324900 avail Mem:表示可用于内存分配的内存大小为 3324900 KiB。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID:进程ID,唯一标识系统中每个正在运行的进程。
USER:启动进程的用户。
PR:进程的优先级。
NI:进程的nice值,用于调整进程的优先级。
VIRT:进程占用的虚拟内存大小。
RES:进程占用的物理内存大小(常驻集大小)。
SHR:进程共享的内存大小。
S:进程状态,包括运行中(R)、睡眠中(S)、僵死(D)等。
%CPU:进程占用CPU的使用率。
%MEM:进程占用内存的使用率。
TIME+:进程占用CPU的累计时间。
COMMAND:启动进程的命令。
53.ps
用于查询当前系统中得进程情况
命令:
ps 参数
参数:
-anx 显示所有用户的进程,以属性结构展示,并显示详细信息
-a 显示所有终端机全部进程
-n 以数字来表示USER和WCHAN栏位。
-x 显示所有进程,不以终端机来区分
-ef 显示进程之间父子关系,
-e 列出进程显示进程所使用的环境变量
-f 使用ASCII字符显示树状结构,表达进程间的相互关系
-u 显示当用户的进程
ps -u root
-p 显示特定pid进程
ps -p 1234
ps -efL | wc -l # 显示进程总数
54.kill
根据进程id杀死进程
命令:
kill 进程id
参数:
-s 指定发送信号杀死进程
SIGHUP (1):终端挂起或控制进程终止。
SIGINT (2):用户发送的中断信号,通常由按下 Ctrl + C 来发送。
SIGKILL (9):强制终止进程,进程无法捕获或忽略这个信号。
SIGTERM (15):默认的终止信号,通常用于请求进程正常退出。
SIGSTOP (19):停止进程的运行。
SIGCONT (18):继续运行被暂停的进程。
kill -s 9 进程id
kill -s SIGSTOP 进程id
55.fuser
在 Unix 和类 Unix 系统上用来查找哪些进程在使用指定文件或者文件系统的命令
sudo yum install psmisc
命令:
fuser 参数 文件/文件路径
参数:
-k 杀死正在访问指定文件的进程
-m 指定挂载点查看那些进程使用该文件
-v 显示详细的进程信息
-u 显示用户名与进程id
-i 交互式询问是否要杀死这个进程
56.lsof
用于列出当前系统打开的文件的工具
yum install lsof
命令:
lsof 参数
参数:
-i 显示网络连接信息
lsof -i protocol:port
lsof -i :80 # 查看80端口网络信息
lsof -i tcp:80 # 查看协议tcp端口80信息
-u 仅显示指定用户打开的文件
-c 仅显示指定进程名称打开的文件
-p 仅显示指定进程id打开的文件
-t 仅显示进程id不显示其他内容
-i4 显示ipv4网络连接信息
-i6 显示ipv6网络连接信息
-d 仅显示指定目录下被打开的文件
57.ip
网络配置工具,用于管理网络接口、路由表等网络相关信息
1.查看网络接口情况
ip addr show
2.启用或者禁用网络接口
ip link set [interface] up # 启用网络接口
ip link set [interface] down # 禁用网络接口
3.配置ip地址
ip addr add [ip_address/mask] dev [interface] # 给网络接口配置IP地址
ip addr del [ip_address/mask] dev [interface] # 删除网络接口的IP地址
4.查看路由表
ip route show
5.删除路由添加路由
ip route add [network] via [gateway] # 添加路由
ip route del [network] # 删除路由
6.查看arp表
ip neigh show
7.清除arp缓存
ip neigh flush all
8.添加网卡
ip link add name veth0 type veth # 网卡名字 veth0 类型 veth
ip link set veth0 up # 启用网卡
ip addr add 192.168.100.1/24 dev veth0 # 设置网卡虚拟ip地址
9.删除网卡
ip link delete veth0
58.ping
采用icmp协议无端口传输
基本用法:ping <目标主机> # 这会发送 ICMP 请求到目标主机,并显示与目标主机的连通性状态
指定发送数据包数量: ping -c <次数> <目标主机> # 发送多个少次数据包到目标主机
指定发送数据包大小:ping -s <大小> <目标主机> # 发送指定数据包大小
持续 ping:ping -i <间隔时间> <目标主机> # 根据间隔时间发送数据包到指定 目标主机
显示完整时间戳:ping -D <目标主机> # 使用 -D 参数可以显示每个回应数据包的完整时间戳。
限制 TTL:ping -t <TTL值> <目标主机> # 可以限制数据包在网络中传输的最大跳数(TTL 值),避免数据包无限循环。
59.traceroute
是一个用于跟踪网络数据包在互联网中传输路径的命令行工具。它通过发送一系列的 ICMP 请求(默认情况下)来获取从源主机到目标主机的网络路径,并显示每个跃点上经过的路由器的 IP 地址。
yum install traceroute -y
基本用法:
traceroute <目标主机> # 这会发送一系列的 ICMP 请求,从你的主机到目标主机,然后显示每个跳点的 IP 地址、延迟和响应时间。
指定最大跃点数:
traceroute -m <跃点数> <目标主机> # 可以使用 -m 参数限制跃点数,这样可以控制 traceroute 命令的执行范围。
使用 TCP 或 UDP 协议:
traceroute -T <目标主机>
traceroute -U <目标主机>
默认情况下,traceroute 使用 ICMP 协议发送请求,但你也可以选择使用 TCP 或 UDP 协议发送请求。
指定端口号:
traceroute -p <端口号> <目标主机> # 可以指定发送请求时使用的端口号。
显示每个跃点的完整信息:
traceroute -I <目标主机> # 使用 -I 参数可以显示每个跃点的完整信息,包括 IP 地址、RTT(Round-Trip Time)等。
60.wget
用于下载的一个命令
用法:
wget 参数 url
参数:
-O 将下载的内容指定到某个文件路径下指定的文件名
-b 后台下载
-c 继续未完成下载
-p 下载文件指定到某个目录下
-q 静默模式,不显示输出信息
-r 递归下载,下载指定url链接中得所有文件
--limit-rate 限制下载速度
下载文件:wget http://example.com/file.zip
后台下载文件:wget -b http://example.com/file.zip
递归下载整个网站:wget -r http://example.com
限速下载:wget --limit-rate=100k http://example.com/file.zip
61.scp
用于本地系统与远程系统安全传输文件的命令
命令:
scp 文件 用户@机器ip:/指定路径与文件名称 # 从本地到远程
scp 用户@机器ip:/指定路径与文件名称 文件名 # 从远程到本地
参数:
-P port:指定远程主机的端口号。
-r:递归复制整个目录。
-p:保持原文件的修改时间、访问时间和权限。
-v:显示详细的传输信息,便于调试。
-q:静默模式,不显示传输过程。
-C:启用压缩传输,减少数据传输量。
-i identity_file:指定密钥文件。
-l limit:限制传输速率,减少网络拥堵。
-B:使用批处理模式(非交互式),适用于脚本自动化。
-S program:指定加密程序,可用于加密传输。
62.rsync
是一个强大的文件同步工具,它可以在本地或远程系统之间同步文件和目录。除了基本的文件复制外,rsync 还可以智能地只传输发生变化的部分,从而减少数据传输量
命令:
rsync 参数 文件 用户@ip:/路径文件名 # 从本地到远程
rsync 参数 用户@ip:/路径/文件名 存储文件 # 从远程到本地
参数:
-v, --verbose:显示详细的输出信息。
-r, --recursive:递归同步子目录。
-a, --archive:归档模式,保持文件属性、权限等。
-z, --compress:在传输过程中压缩数据,减少网络传输量。
-u, --update:仅同步源目录中更新过的文件。
-n, --dry-run:模拟操作,显示将要执行的同步动作,但不实际执行。
-h, --human-readable:以人类可读的格式显示输出信息。
--delete:删除目标目录中多余的文件。
--exclude:排除指定的文件或目录。
-P 显示传输文件的进度,并支持断点续传
用法:
rsync -avzP /path/to/source username@remote_host:/path/to/destination
rsync -avzP username@remote_host:/path/to/source /path/to/destination
63.ss
用于查看套接字统计信息
命令:
ss 参数
参数:
-t:显示 TCP 套接字信息。
-u:显示 UDP 套接字信息。
-l:显示监听状态的套接字。
-p:显示进程相关信息,包括 PID 和进程名称。
-n:直接使用 IP 地址,而不进行服务名解析。
-a:显示所有套接字,包括监听和非监听状态。
-e:显示详细的套接字信息,包括 UID、PID 等。
-i:显示内部信息,如实时统计数据等。
常用:
ss -tunlp
64.nmap
是一个用于网络探测和安全审计的强大工具,可以帮助你扫描主机、端口和服务等信息。
sudo yum install nmap
命令:
nmap 参数
参数:
1.扫描主机
nmap target # 扫描主机
nmap -iL targets.txt # 从文件中批量扫描主机
2.端口扫描
nmap -p <port> # 指定扫描端口。
nmap -p- # 扫描所有端口。
nmap -F # 快速扫描常见端口。
3.扫描类型
-sS # TCP SYN 扫描。
-sT # TCP 连接扫描。
-sU # UDP 扫描。
4.操作系统检测
-O # 尝试猜测目标主机的操作系统
5.服务器版本检测
-sV # 检测目标主机开放的服务版本
6.脚本扫描
--script=<script> # 执行指定的 NSE 脚本
7.输出格式
-oN output.txt # 将扫描结果保存到文件。
-oX output.xml # 将扫描结果保存为 XML 格式。
8.其他参数
-v # 显示详细输出信息。
-A # 启用 OS 检测、服务版本检测和脚本扫描。
65.find
用于在指定目录下查找文件和目录
基本用法:
find directory -name filename:在指定目录下按照文件名查找文件。
find directory -type d:查找指定目录下的所有子目录。
find directory -type f:查找指定目录下的所有文件。
常用参数:
-name pattern:按照文件名模式进行匹配。
-iname pattern:按照文件名模式进行不区分大小写匹配。
-type type:按照文件类型进行匹配,d 表示目录,f 表示文件。
-size [+|-]size[c]:根据文件大小进行匹配,+ 表示大于,- 表示小于,c 表示以字节为单位。
-user username:根据所有者用户名进行匹配。
-group groupname:根据所属用户组进行匹配。
-mtime n:按照修改时间进行匹配,n 表示天数。
-exec command {} \;:对搜索到的文件执行指定命令。
示例:
查找所有以 .txt 结尾的文件:find /path/to/directory -name "*.txt"
查找所有大于 1MB 的文件:find /path/to/directory -size +1M -type f
查找所有属于特定用户的文件:find /path/to/directory -user username
66.tr
基本用法:
tr set1 set2:将输入中的 set1 中的字符替换为 set2 中对应位置的字符。
tr -d set1:删除输入中属于 set1 中的字符。
tr -s:压缩输入中重复的字符。
常用参数:
-d SET1:删除 set1 中指定的字符。
-s:压缩连续重复的字符。
-c:对 set1 中指定的字符取补集。
-t:将 set1 按照 set2 的顺序进行映射而不做替换。
-u:将 set1 中的字符转换为大写。
-l:将 set1 中的字符转换为小写。
示例:
将输入中的大写字母转换为小写:echo "HELLO" | tr 'A-Z' 'a-z'
删除输入中的空格:echo "hello world" | tr -d ' '
压缩连续重复的字符(只留一个o):echo "hellooo" | tr -s 'o'
67.uniq
用于在文本文件中去除重复的行,并且可以帮助对文本数据进行去重操作
命令:
uniq 参数 文件
参数:
-c, --count:显示每行重复出现的次数,并在行首添加该行出现次数。
-d, --repeated:仅显示重复的行,即只显示出现过至少两次的行。
-i, --ignore-case:忽略大小写,这样相同行但大小写不同的行将被视为重复行。
-u, --unique:仅显示不重复的行,即只显示出现过一次的行。
68.grep
强大的文本搜索工具,用于在文件中搜索指定模式的字符串
命令:
grep 参数 文件
参数:
-i, --ignore-case:忽略大小写进行匹配。
-r, --recursive:递归地在目录中搜索文件。
-n, --line-number:显示匹配行的行号。
-v, --invert-match:显示不匹配指定模式的行。
-w, --word-regexp:仅匹配整个单词,而不是部分匹配。
-c, --count:仅显示匹配行的数量,不显示具体内容。
-l, --files-with-matches:仅显示包含匹配内容的文件名。
-A NUM, --after-context=NUM:显示匹配行及其后 NUM 行的内容。
-B NUM, --before-context=NUM:显示匹配行及其前 NUM 行的内容。
-e PATTERN, --regexp=PATTERN:指定匹配模式,可以使用多个 -e 参数指定多个模式。
69.tee
用于从标准输入读取数据,并同时将数据输出至标准输出和一个或多个文件,输出的内容不仅在终端上显示,同时会写入到文件中
命令:
echo "xxx" | tee 参数 filelist.txt
参数:
-a, --append:追加方式写入文件,而不是覆盖文件内容。
-i, --ignore-interrupts:忽略中断信号(如 Ctrl+C)。
FILE:指定要写入数据的文件名,可以同时指定多个文件名,多个文件名之间用空格分隔。
用法:
ls | tee filelist.txt
echo "additional line" | tee -a filelist.txt
70.awk
awk 是一种强大的文本处理工具,通常用于对结构化文本文件进行处理和分析
打印指定列:
awk '{print $2}' filename
这个命令会打印文件中每行的第二列内容。
指定分隔符:
awk -F':' '{print $1}' /etc/passwd
这个命令使用 : 作为分隔符来解析文件内容。
过滤行:
awk '/pattern/' filename
这个命令会打印包含指定模式的行。
计算总和/平均值:
awk '{sum+=$1} END {print "Sum: " sum}' filename
这个命令会计算第一列的总和并输出。
自定义输出格式:
awk '{printf "Name: %s, Age: %d\n", $1, $2}' filename
这个命令会按照指定格式输出每行内容。
指定条件:
awk '$3 > 50 {print $1}' filename
这个命令会打印第一个字段,如果第三个字段的值大于 50。
使用文件里的变量:
awk -v var=123 '{print $1, var}' filename
这个命令会将文件中的第一列和指定的变量一起输出。
自定义字段分隔符:
awk -F',' '{print $1, $2}' filename
这个命令会使用逗号作为字段分隔符来解析文件内容。
71.sed
sed(Stream EDitor)是一个流式文本编辑器,用于对文本数据进行流式处理和转换
替换字符串:
sed 's/old_string/new_string/g' filename
这个命令会在文件中将所有的 old_string 替换为 new_string。
删除指定行:
sed '2d' filename
这个命令会删除文件中的第二行。
在指定行后插入内容:
sed '2a\new_line' filename
这个命令会在文件的第二行后插入新的一行。
打印指定行:
sed -n '5p' filename
这个命令会打印文件中的第五行。
删除空白行:
sed '/^$/d' filename
这个命令会删除文件中的空白行。
替换指定行内容:
sed '3c\new_content' filename
这个命令会将文件中的第三行替换为新的内容。
删除行尾空格:
sed 's/[[:space:]]*$//' filename
这个命令会删除文件中每行末尾的空格字符。
只处理匹配行:
sed '/pattern/ s/old/new/g' filename
这个命令只会对包含指定模式的行进行替换操作。
使用备份文件:
sed -i.bak 's/old/new/g' filename
这个命令会在替换的同时创建一个 .bak 的备份文件。
72.sort
用于对文本文件的内容进行排序
按字母顺序排序:
sort filename
这个命令会按照每行的首字母顺序对文件内容进行排序。
按数字大小排序:
sort -n filename
这个命令会按照每行内容的数值大小进行排序。
按逆序排序:
sort -r filename
这个命令会按照逆序(降序)对文件内容进行排序。
忽略大小写排序:
sort -f filename
这个命令会在排序时忽略大小写。
按指定列排序:
sort -k2 filename
这个命令会按照第二列内容进行排序。
去重并排序:
sort -u filename
这个命令会去除重复行并对内容进行排序。
指定字段分隔符:
sort -t':' -k3 filename
这个命令会使用冒号作为字段分隔符,并按照第三列内容进行排序。
合并已排序文件:
sort file1 file2 | sort -m -
这个命令会合并两个已排序的文件内容并进行最终排序。
73.xargs
xargs命令是一个强大的命令,用于从标准输入中读取数据并将其作为参数传递给其他命令。它通常用于解决通过管道传递大量数据时参数过多的问题。
1. 基本用法:
command1 | xargs command2
这个命令会将 command1 的输出作为参数传递给 command2。
2. 指定参数个数
command1 | xargs -n 3 command2
这个命令会将每次传递三个参数给 command2。
3. 自定义分隔符
command1 | xargs -d ',' command2
这个命令会使用逗号作为参数的分隔符。
4. 交互式确认:
command1 | xargs -p command2
这个命令会在执行前提示用户确认是否继续。
5. 替换字符串:
echo "file1 file2 file3" | xargs -I {} cp {} /destination/
这个命令会将 {} 替换为输入的每个参数,并执行 cp 命令。
6. 处理特殊字符:
find . -type f -print0 | xargs -0 command
这个命令会处理文件名中包含特殊字符(如空格)的情况。
7. 并行处理:
cat file.txt | xargs -P 4 -n 1 command
这个命令会并行处理输入,最多同时运行 4 个进程。
8. 结合 find 命令:
find . -name "*.txt" | xargs grep "pattern"
这个命令会在所有 .txt 文件中搜索匹配的模式。
74.curl
是一个在命令行下用来传输数据的工具,它支持多种协议,包括 HTTP、HTTPS、FTP 等
命令:
curl 参数 url
参数:
-X:指定 HTTP 请求方法,如 GET、POST、PUT、DELETE 等。
-H:添加 HTTP 头信息,可以多次使用该参数来添加多个头信息。
-d:发送 POST 请求时附加数据,通常用于表单提交。
-F:发送 multipart/form-data 格式的 POST 请求,常用于文件上传。
-o:将服务器响应保存到本地文件。
-O:将服务器响应保存到本地文件,文件名由服务器端决定。
-L:对重定向请求进行跟踪,直到获取最终结果。
-i:显示响应头信息。
-s:静默模式,不输出错误和进度信息。
--user:指定用户名和密码进行 HTTP 基本认证。
-u:指定用户名和密码进行身份验证。
-k:忽略 SSL 证书检查。
-v:显示详细的执行信息,包括请求和响应头。
--data-binary:以二进制方式发送数据。
75.file
用于确定文件类型
命令:
file 参数 文件
参数:
-b:以短格式输出文件类型,不显示文件名。
-i:对不可打印字符使用输出转义。
-k:在输出中包括 MIME 类型。
-z:压缩文件不解压缩就检查。
--mime-encoding:输出编码方式。
-L:跟随符号链接。
-d:对目录进行测试。
使用:
file filename.txt