博文将不断学习补充
学习参考博文:
Linux命令大全:掌握常用命令,轻松使用Linux操作系统-优快云博客
文件或目录操作指令
pwd
显示当前工作目录
pwd
cd
切换目录
# 默认切换至用户主目录
cd
# 用户主目录
cd ~
# 根目录
cd /
# 上一级目录
cd ..
# 上二级目录
cd ../..
# 切换至上一次目录位置
cd -
ls
文件和目录列表
# 默认显示当前目录下的文件和目录列表。
ls
# 显示当前目录下所有文件和目录,包括隐藏文件
ls -a
# 递归列出目录下文件,连同子目录文件一起列出
ls -R
# 反转列出文件的顺序
ls -r
# 列出文件或者目录的详细信息
ls -l
格式:
文件类型与权限| 硬链接数| 文件所有者| 文件所属组| 文件大小| 最后修改时间| 文件名
# 按行列出每个文件或者目录
ls -1
# 按照文件修改时间顺序,逆序排列
ls -t
# 只列出目录本身信息,不列出其中内容
ls -d
# 查看文件的inode编号
ls -i filename
当filename为目录名时,默认列出此目录下的目录和文件的inode编号
注:文件或者目录的inode编号,是一个用于标识的唯一数字,由内核分配给文件中每一个对象
# 列出当前目录下的文件和目录,同时以特定方式格式化输出
ls -F
在每个条目后面添加特定的字符,以指示该条目的类型
/ 表示这是一个目录 @ 表示这是一个符号链接link | 表示这是一个管道 = 表示这是一个套接字 * 表示这是一个可执行文件
# 过滤输出的列表
? 表示一个字符 * 表示0或多个字符
[] 匹配字母或者字母范围 !a 不匹配字母a 1、列出当前目录下的文件或目录
ls -l word?
或者
ls -l word*
2、列出指定目录下的文件或目录
ls word?
或者
ls word*
file
查看文件类型
file filename1 [filename2…]
如下指令常用于处理文件或目录
touch
创建空文件
touch filename
mkdir
创建空目录
mkdir dirname
cp
复制文件
cp source destination
1、备份整个文件夹(归档模式);递归复制目录与内容,保留源文件所有属性
cp -a source destination
或者
cp -R source destination
当前目录存在destination目录时,source 目录备份到destination目录下;
当前目录不存在destination目录时,先创建destination目录,再将source目录下的文件和目录复制到destination目录下。
2、交互式复制;覆盖目标文件前,进行提示
cp [-i] source destination
若destination文件已经存在,会提示是否覆盖原文件内容;
若不存在destination文件,则创建该文件
3、强制复制;覆盖目标文件前,不提示
cp -f source destination
4、目标文件保留原文件的属性(包括所有者、所属组、权限和时间戳等)
cp -p source destination
5、在当前目录下备份一份文件
cp source .
使用单点符(.),表示当前工作目录
mv
移动或重命名文件
文件的inode编号与时间戳不变
1、移动文件或目录到另一目录下
mv source1 [source2…] destination
mv [-i] source1 [source2…] destination
默认存在相同名称文件时,mv上诉指令在覆盖前会进行提示
2、强制移动
mv -f source destination
3、移动并重命名文件或目录;仅能操作单个文件或目录
mv oldname newname
rm
删除文件或目录
1、删除文件;默认进行确认提示
rm [-i] filename1 [filename2…]
2、强制删除;不进行提示
rm -f filename1 [filename2…]
3、递归删除子目录文件与当前目录
rm -r dirname1 [dirname2…]
4、禁忌指令
rm -rf /*
rmdir
删除空目录
若目录存在文件无法删除
rmdir dirname
zip
zip是使用最多的文档压缩格式
方便跨平台使用,但是压缩率不是很高
zip指令未安装
安装zip
yum install zip
安装unzip
yum install unzip
1、压缩
zip -r archive_name.zip filename
# 将几个文件和目录同时压缩成一个zip格式的压缩包
2、解压
unzip archive_name.zip
输入输出重定向
wc
统计文本行数、单词数、字符数
>
>>
<
<<
如下指令常用于查看文件内容
cat
查看整个文件内容
cat filename
1、给所有行加上行号
cat -n filename
2、只给有文本的行加上行号
cat -b filename
3、不让制表符出现:使用^I字符替换文本中的制表符
more
按页显示文本内容
more filename
此命令会根据当前终端页面大小,会动态调整输出的文本内容
空格键 按页输出后续内容 回车键 按行输出后续内容 Q键 退出输出 Ctrl + Z键 中断输出 Q键
Ctrl + Z键
less
在more命令基础上增加更多选项
常用如:增加支持键盘上下键翻页功能
less filename
tail
查看文件尾部内容,默认显示末尾10行;
-f 参数允许用户在其他进程使用文件时查看文件内容;
tail命令会保持活跃状态,并不断显示添加到文件中的内容(适用于实时监测log)
tail filename
1、自行设置显示尾部行数
tail -n number filename
head
查看文件头部内容,默认显示头部10行;
除无-f 参数外,其他与tail命令类似
head filename
grep
在指定文件中查找匹配的文本
grep [options] pattern [file]
系统指令
如下指令常用于监控系统
ps
探查进程
Linux系统中的GNU ps命令支持3中不同类型的命令行参数:
Unix风格——前面加单破折线;
BSD风格——前面不加破折线;
GNU风格——前面加双破折线
故使用前,可使用 ps --help 查看当前系统参数风格。
1、ps --help用法
Try 'ps --help <simple|list|output|threads|misc|all>' or 'ps --help <s|l|o|t|m|a>'
ps --help simple Usage: ps [options] Basic options: -A, -e all processes -a all with tty, except session leaders a all with tty, including other users -d all except session leaders -N, --deselect negate selection r only running processes T all processes on this terminal x processes without controlling ttys
TTY
字段代表“Terminal Type”,即终端类型。它表示进程关联的终端或控制台。2、显示当前终端会话中属于当前用户的进程列表
ps
3、显示系统所有进程的信息
ps -e 或者 ps -A
4、 显示终端上的所有进程,包括其他用户的进程
ps -a
5、显示没有终端控制的进程
ps -x
ps --help output Usage: ps [options] Output formats: -F extra full -f full-format, including command lines f, --forest ascii art process tree -H show process hierarchy -j jobs format j BSD job control format -l long format l BSD long format -M, Z add security data (for SELinux) -O <format> preloaded with default columns O <format> as -O, with BSD personality -o, o, --format <format> user-defined format s signal format u user-oriented format v virtual memory format X register format -y do not show flags, show rss vs. addr (used with -l) --context display security context (for SELinux) --headers repeat header lines, one per page --no-headers do not print header at all --cols, --columns, --width <num> set screen width --rows, --lines <num> set screen height
6、显示长格式的进程信息,例如进程命令行、进程状态(S)、进程的会话ID(SID)等
ps -l
7、使用全格式显示进程信息,包括父进程ID(PPID)、进程状态、CPU使用率(%CPU)、内存使用率(%MEM)等
ps -f
ps -F 提供了比 ps -f 更加详细的进程信息,是其增强版。
添加了SZ(进程使用的虚拟内存大小)、RSS(进程使用的物理内存大小)、PSR(进程当前运行的CPU编号)、ADDR(进程在内核虚拟地址空间中的地址)和WCHAN(进程正在等待的内核函数名称)等字段。
8、自定义输出格式,指定要显示的列
ps -o 自定义列
ps --help list Usage: ps [options] Selection by list: -C <command> command name -G, --Group <GID> real group id or name -g, --group <group> session or effective group name -p, p, --pid <PID> process id --ppid <PID> parent process id -q, q, --quick-pid <PID> process id (quick mode) -s, --sid <session> session id -t, t, --tty <tty> terminal -u, U, --user <UID> effective user id or name -U, --User <UID> real user id or name The selection options take as their argument either: a comma-separated list e.g. '-u root,nobody' or a blank-separated list e.g. '-p 123 4567'
VSZ字段代表“Virtual Memory Size”,表示进程占用的虚拟内存大小(单位通常是KB)。
RSS字段代表“Resident Set Size”,表示进程当前占用的物理内存大小(单位通常是KB)。
STAT表示进程的状态;该字段包含了多个字符,每个字符都代表了一种状态。
字段 解释 D 不可中断的睡眠状态,通常表示进程正在进行I/O操作 R 运行中或就绪状态 S 可中断的睡眠状态,表示进程正在等待某个事件或资源,并且可以被信号唤醒 T 停止状态 Z 僵尸进程,即已经终止但尚未被父进程回收的进程 W 没有足够的内存分页可分配 < 高优先级的进程 N 低优先级的进程 L 内存锁定(memory locked)。这表示进程的一部分或全部内存被锁定在内存中,不会被换出(swapped out) s 会话领导者(session leader)。这表示进程是某个会话的领头进程 + 前台进程组的成员。这表示进程属于某个前台进程组,与当前终端关联 9、显示指定用户的进程信息
ps -u [用户名]
默认当前用户的信息
10、列出指定程序的进程信息
ps -C 进程名
11、显示指定进程ID的进程信息
ps -p PID
ps --help threads Usage: ps [options] Show threads: H as if they were processes -L possibly with LWP and NLWP columns -m, m after processes -T possibly with SPID column
12、查看当前系统运行的所有用户的所有进程
ps aux
13、查看所有进程ID、进程名、内存占用百分比
ps -e -o pid,comm,%mem
MobaXterm持续获取CPU和内存
1、使用top持续输出
2、直接读取文件
while true; do echo "CPU Info at $(date)" >> system_info.log cat /proc/cpuinfo >> system_info.log echo "Memory Info at $(date)" >> system_info.log cat /proc/meminfo >> system_info.log echo "------------------------" >> system_info.log sleep 5 done
top
实时显示系统中各个进程CPU、内存等资源的使用情况。
top
1、在top界面中,按下“M”键(或“Shift+M”)可以根据内存使用率对进程进行排序。
2、按下
1
键来显示每个CPU核心的详细使用情况。
3、使用Ctrl + C键退出top命令
df
显示文件系统的磁盘空间使用情况
dmesg
显示内核环形缓冲区(kernel ring buffer)内容;
用于查看系统启动时的内核消息,以及系统运行期间内核产生的日志信息
常用选项 含义 -c 清除环形缓冲区的内容 -s <SIZE> 设置缓冲区大小<SIZE> -r 显示原始消息缓冲区内容
如下指令常用于控制系统
shutdown
参数
-H, --halt Halt the machine. -P, --poweroff Power-off the machine (the default). -r, --reboot Reboot the machine. -h Equivalent to --poweroff, unless --halt is specified. -k Do not halt, power-off, reboot, just write wall message. --no-wall Do not send wall message before halt, power-off, reboot. -c Cancel a pending shutdown. This may be used cancel the effect of an invocation of shutdown with a time argument that is not "+0" or "now".
1、关闭系统
shutdown -h now
init 0
telinit 02、按预定时间关闭系统
shutdown -h hours:minutes &3、取消按预定时间关闭系统
shutdown -c4、立即重启
shutdown -r now
reboot5、注销
logout
6、测算一个命令(即程序)的执行时间
time
man
网络配置指令
ifconfig
1、显示当前系统中所有处于激活状态的网络接口信息
ifconfig
2、显示所有网络接口的信息,无论是否激活。
ifconfig -a
3、显示指定网络接口的信息
ifconfig [interface]
4、激活指定网络接口
ifconfig [interface] up
5、关闭指定网络接口
ifconfig [interface] down
6、为指定网络接口设置IP地址和子网掩码,并自动激活;
ifconfig [interface] [ip] netmask [netmask]
7、修改指定网络接口的MAC地址与MTU
ifconfig [interface] hw ether [mac_address] mtu [mtu]
IP
route
1、显示当前路由表
route
或者
ip route show
2、添加一条静态路由
route add -net [ip] netmask [netmask] gw [gw] dev [interface]
3、删除一条静态路由
route del -net [ip] netmask [netmask] gw [gw]
4、添加默认路由
route add default gw [gw] [interface]
添加默认网关时,需要确保所选的网络接口(如ens36或ens33)是活动的,
并且与网关IP地址在同一网络段内。
如果网络接口未正确配置或未连接到网络,则无法添加默认网关(如此处报错Network is unreachable)。
5、删除默认路由
route del default gw [gw]
6、添加到主机路由
route add -host [ip] gw [gw]
7、删除到主机路由
route del -host [ip] gw [gw]
路由表参数
Flags 解释 U[p] 路由已经启动,是一个有效路由 G[ateway] 该路由到指定网络需要使用gw转发 H[ost] 该路由目标为主机Host R[einstate] 使用动态路由时,恢复路由标识 D[ynamic] 该路由是由服务功能设定的动态路由 M[odified] 该路由已经被修改 ! 该路由不被接受 A[ddress] 某些上下文中,可能表示该路由是一个广播地址 C[ache] 该路由是来自路由缓存
iptables
是用于配置Linux内核防火墙的工具,具有IP包过滤功能。
基本语法格式 iptables [-t table] [-A|-C|-D chain] [-i interface] [-o interface] [-p protocol] \ [-s source_ip/mask] [-d destination_ip/mask] [--sport source_port] \ [--dport destination_port] [-j target]
[-t table]:指定要操作的表,省略[-t table]时,默认filter
[-A|-C|-D chain] :
-A 向链添加规则
-C 检查链中是否存在规则(通常用于脚本中的条件检查)
-D 从链中删除规则
[-i interface] :指定数据包进入接口
[-o interface] :指定数据包离开接口
[-p protocol] : 指定协议(TCP、UDP、ICMP等)
[-s source_ip/mask] :指定源IP和子网掩码
[-d destination_ip/mask] :指定目的IP和子网掩码
[--sport source_port] : 指定源端口
[--dport destination_port] :指定目的端口[-j target]:匹配规则后的动作(accept,drop,reject,redirect,log等)
图:iptables中数据包处理流程
图:iptables简化处理流程
iptables的基本组件
I、表
内建规则表:nat、mangle和filter。
fiter:
决定数据包处理方式(接受、拒绝或丢弃);
拥有input、forward、output三个规则链。
nat:
网络地址转换,进行一对一、一对多、多对多地址转换。
拥有prerouting、postrouting两个规则链。
mangle:
修改数据包头信息
拥有prerouting、forward、postrouting三个规则链。
raw:
用于处理数据包在路由决策之前。
security:
用于SELinux等安全模块的数据包访问控制。
II、链
INPUT:处理进入本机的数据包。
FORWARD:处理经过本机转发的数据包。
OUTPUT:处理从本机发出的数据包。
PREROUTING:用于处理目的地址转换前的数据包。
POSTROUTING:用于处理源地址转换后的数据包。
注意:链的英文必须大写,否则会报错。
III、规则
定义如何处理匹配特定条件的数据包。
可以基于源地址、目的地址、协议类型(TCP、UDP、ICMP)、端口号等条件。
# 允许SSH访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 打印当前的iptables全部规则和特定的链规则
iptables -L -v -n 全部规则
或者
iptables -L [chain] -v -n 特定的链规则
-L :列出规则
-v:详细模式Verbose,显示更多信息
-n:不进行DNS解析,直接显示IP地址和端口号
如:iptables -L INPUT -v -n
# 拒绝HTTP访问
iptables -A INPUT -p tcp --dport 80 -j DROP
# 转发所有流量到8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
此处查看时,必须要指定为nat表。
# 删除规则
iptables -t nat -D PREROUTING 1 此处1为规则编号
# 保存和恢复规则
iptables规则在重启后会丢失。
iptables-save > 文件
iptables-restore < 文件
ping
防火墙相关
# 查看防火墙状态
systemctl status firewalld
# 启动防火墙
systemctl start/restart firewalld
# 关闭防火墙,临时停用,重启后失效
systemctl stop firewalld或者systemctl stop firewalld.service
# 永久关闭防火墙
systemctl disable firewalld 或者 systemctl disable firewalld.service
# 开机自启动防火墙
systemctl enable firewalld 或者 systemctl enable firewalld.service
# 查看防火墙是否开机自启动
systemctl is-enabled firewall
# firewall-cmd指令
其他工具指令
Python相关
1、