快捷键
#移动到行首
ctrl+a
#移动到行尾
ctrl+e
#删除光标之前的字符
ctrl+u
#删除光标之后的字符
ctrl+k
#清屏
ctrl+l
正则表达式
正则中普通常用的元字符
元字符 | 功能 |
---|---|
. | 匹配除了换行符以外的任意单个字符 |
* | 前导字符出现0次或连续多次 |
.* | 任意长度字符 |
^ | 行首(以…开头),如:“^by”,匹配已by单词开头的行 |
$ | 行尾(以…结尾), 如:“$by”,匹配已by单词结尾的行 |
^$ | 空行 |
[] | 匹配括号里任意单个字符或一组单个字符 |
[^] | 匹配不包含括号里任一单个字符或一组单个字符 |
1 | 匹配以括号里任意单个字符或一组单个字符开头 |
[] | 匹配不以括号里任意单个字符或一组单个字符开头 |
正则中其他常用元字符
元字符 | 功能 | 备注 |
---|---|---|
< | 取单词的头 | |
> | 取单词的尾 | |
< > | 精确匹配 | |
{n} | 匹配前导字符连续出现n次 | |
{n,} | 匹配前导字符至少出现n次 | |
{n,m} | 匹配前导字符出现n次与m次之间 | |
( ) | 保存被匹配的字符 | |
\d | 匹配数字(grep -P) | [0-9] |
\w | 匹配字母数字下划线(grep -P) | [a-zA-Z0-9_] |
\s | 匹配空格、制表符、换页符(grep -P) | [\t\r\n] |
扩展类正则常用元字符
- grep你要用我,必须加 -E 或者 让你兄弟
egrep
来找我- sed你要用我,必须加 -r
扩展元字符 | 功能 | 备注 |
---|---|---|
+ | 匹配一个或多个前导字符 | bo+ 匹配boo、 bo |
? | 匹配零个或一个前导字符 | bo? 匹配b、 bo |
| | 或 | 匹配a或b |
() | 组字符(看成整体) | (my|your)self:表示匹配myself或匹配yourself |
{n} | 前导字符重复n次 | |
{n,} | 前导字符重复至少n次 | |
{n,m} | 前导字符重复n到m次 |
第二类正则
表达式 | 功能 | 示例 |
---|---|---|
[:alnum:] | 字母与数字字符 | [[:alnum:]]+ |
[:alpha:] | 字母字符(包括大小写字母) | [[:alpha:]]{4} |
[:blank:] | 空格与制表符 | [[:blank:]]* |
[:digit:] | 数字 | [[:digit:]]? |
[:lower:] | 小写字母 | [[:lower:]]{4,} |
[:upper:] | 大写字母 | [[:upper:]]+ |
[:punct:] | 标点符号 | [[:punct:]] |
[:space:] | 包括换行符,回车等在内的所有空白 | [[:space:]]+ |
查看CPU
lscpu
或
cat /proc/cpuinfo
查看内存大小
free
或
cat /proc/meminfo
echo
echo "This is a test text." > test.txt
将文本This is a test text.输出重定向到文件test.txt中,如果文件已存在,将会覆盖文件内容,如果不存在则创建。其中**>**符号表示输出重定向。
文本追加到文件内容最后,而不是覆盖它,请使用**>>**输出追加重定向符号。
注:>:覆盖文件内容 >>:文本追加到文件内容最后
显示命令执行结果
方法一:
echo `pwd`
方法二:$(command)
echo $(pwd)
date
命令格式:date [选项] [**+**格式]
字符 | 说明 |
---|---|
%a | 当地时间的星期名缩写(例如: 日,代表星期日) |
%A | 当地时间的星期名全称 (例如:星期日) |
%b | 当地时间的月名缩写 (例如:一,代表一月) |
%B | 当地时间的月名全称 (例如:一月) |
%c | 当地时间的日期和时间 (例如:2005年3月3日 星期四 23:05:25) |
%C | 世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20) |
%d | 按月计的日期(例如:01) |
%D | 按月计的日期;等于%m/%d/%y |
%F | 完整日期格式,等价于 %Y-%m-%d |
%j | 按年计的日期(001-366) |
%p | 按年计的日期(001-366) |
%r | 当地时间下的 12 小时时钟时间 (例如:11:11:04 下午) |
%R | 24 小时时间的时和分,等价于 %H:%M |
%s | 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数 |
%T | 时间,等于%H:%M:%S |
%U | 一年中的第几周,以周日为每星期第一天(00-53) |
%x | 当地时间下的日期描述 (例如:12/31/99) |
%X | 当地时间下的时间描述 (例如:23:13:48) |
%w | 一星期中的第几日(0-6),0 代表周一 |
%W | 一年中的第几周,以周一为每星期第一天(00-53) |
命令用法示例:
-
查看今天是当年中的第几天
[root@VM-16-5-centos ~]# date '+%j' 298
注:需要有 +
设置系统时间
date -s 时间
校正系统时间,与网络时间同步
安装ntp校时工具
yum -y install ntp
用ntpdate从时间服务器更新时间
ntpdate time.nist.gov
wget 在终端中下载文件
命令格式:wget [参数] 下载地址
参数说明:
参数 | 作用 |
---|---|
-b | 后台下载 |
-P | 下载到指定目录 |
-t | 最大重试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等 |
-r | 递归下载 |
ps
命令格式:
ps [参数]。
命令参数说明
参数 | 作用 |
---|---|
-a | 显示现行终端机下的所有程序,包括其他用户的程序 |
-u | 以用户为主的格式来显示程序状况 |
-x | 显示没有控制终端的进程,同时显示各个命令的具体路径 |
-e | 列出程序时,显示每个程序所使用的环境变量 |
-f | 显示当前所有的进程 |
-t | 指定终端机编号,并列出属于该终端机的程序的状况 |
top
命令描述:
top命令动态地监视进程活动与系统负载等信息。
top - 10:38:10 up 42 min, 1 user, load average: 0.00, 0.10, 0.11
Tasks: 73 total, 2 running, 71 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 1.3 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1014560 total, 177908 free, 121028 used, 715624 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 742920 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1639 root 10 -10 137188 16400 11216 S 2.0 1.6 0:46.50 AliYunDun
1668 root 10 -10 436916 2792 2348 S 0.3 0.3 0:01.27 AliSecGuard
11604 root 20 0 805672 9700 4712 S 0.3 1.0 0:00.82 aliyun-service
1 root 20 0 125476 3948 2620 S 0.0 0.4 0:01.20 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0
命令输出参数解释:
以上命令输出视图中分为两个区域,一个统计信息区,一个进程信息区。
-
统计信息区
-
第一行
09:14:56 : 系统当前时间264 days, 20:56 : 系统开机到现在经过了多少时间1 users : 当前2用户在线load average: 0.02, 0.04, 0.00: 系统1分钟、5分钟、15分钟的CPU负载信息
-
第二行
Tasks:任务;87 total:很好理解,就是当前有87个任务,也就是87个进程。1 running:1个进程正在运行86 sleeping:86个进程睡眠0 stopped:停止的进程数0 zombie:僵死的进程数
-
第三行
Cpu(s):表示这一行显示CPU总体信息0.0%us:用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间。0.7%sy:内核占用CPU时间百分比0.0%ni:改变过优先级的进程占用CPU的百分比99.3%id:空闲CPU时间百分比0.0%wa:等待I/O的CPU时间百分比0.0%hi:CPU硬中断时间百分比0.0%si:CPU软中断时间百分比注:这里显示数据是所有cpu的平均值,如果想看每一个cpu的处理情况,按1即可;折叠,再次按1;
-
第四行
Men:内存的意思8175320kk total:物理内存总量8058868k used:使用的物理内存量116452k free:空闲的物理内存量283084k buffers:用作内核缓存的物理内存量
-
第五行
Swap:交换空间6881272k total:交换区总量4010444k used:使用的交换区量2870828k free:空闲的交换区量4336992k cached:缓冲交换区总量
-
-
进程信息区
列名 | 含义 |
---|---|
PID | 进程ID |
USER | 进程所有者的用户名 |
PR | 进程的优先级别,越小越优先被执行 |
NI | nice值。负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存总量,单位kb |
RES | 进程使用的、未被换出的物理内存大小,单位kb |
SHR | 共享内存大小,单位kb |
S | 进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
%MEM | 进程使用的物理内存和总内存的百分比 |
TIME+ | 该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。 |
COMMAND | 进程启动命令名称 |
操作指令
- q:退出top命令
- :立即刷新
- s:设置刷新时间间隔
- c:显示命令完全模式
- t::显示或隐藏进程和CPU状态信息
- m:显示或隐藏内存状态信息
- l:显示或隐藏uptime信息
- f:增加或减少进程显示标志
- S:累计模式,会把已完成或退出的子进程占用的CPU时间累计到父进程的MITE+
- P:按%CPU使用率排行
- T:按MITE+排行
- M:按%MEM排行
- u:指定显示用户进程
- r:修改进程renice值
- kkill:进程
- i:只显示正在运行的进程
- W:保存对top的设置到文件^/.toprc,下次启动将自动调用toprc文件的设置。
- h:帮助命令。
- q:退出
注:
强调一下,使用频率最高的是P、T、M,因为通常使用top,我们就想看看是哪些进程最耗cpu资源、占用的内存最多.
实例1:多核CPU监控
在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况;
实例2:显示完整的程序命令
命令:top -c
实例3:显示指定的进程信息
命令:top -p pidid
free 查询可用内存
命令描述:
free用于显示当前系统中内存的使用量信息。
命令语法:
free [-bkmotV][-s <间隔秒数>]
命令参数说明:
参数 | 说明 |
---|---|
-b | 以Byte为单位显示内存使用情况 |
-k | 以KB为单位显示内存使用情况 |
-m | 以MB为单位显示内存使用情况 |
-h | 以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。 |
示例:
- 显示当前系统中内存的使用量信息。
free -h
total used free shared buff/cache available
Mem: 1.8G 348M 100M 844K 1.4G 1.3G
Swap: 0B 0B 0B
命令输出说明:
参数 | 说明 |
---|---|
total | 物理内存总数 |
used | 已经使用的内存数 |
free | 空间的内存数 |
share | 多个进程共享的内存总额 |
buff/cache | 应用使用内存数 |
available | 可用的内存数 |
Swap | 虚拟内存 |
lsof
命令格式:
lsof [options] filename
命令参数
-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程(4、6、协议、:端口、 @ip );
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
-h:显示帮助信息;
-v:显示版本信息。
示例:
查找某个文件相关的进程
lsof /bin/bash
列出某个用户打开的文件信息
lsof -u username
-u 选项,u是user的缩写
通过某个进程号显示该进程打开的文件
lsof -p 27358
列出某个程序进程
lsof -c mysql
或
lsof | grep mysql
查看所有网络连接
lsof -i 和 lsof -i@127.0.0.1
查看端口连接情况
lsof -i :22
查看指定进程打开的网络连接
lsof -i -a -p 1535
使用了参数-i、-a、-p等,-i查看网络连接情况,-a查看存在的进程,-p指定进程。
查看指定状态的网络连接
lsof -n -P -i TCP -s TCP:ESTABLISHED
恢复被删除的日志
假设我们要恢复被删除的cron日志:
1.首先通过losf命令找到使用cron文件的进程的PID和cron文件的FD(文件描述符);
[root@hecs-229953 local]# lsof | grep /var/log/cron rsyslogd 819 root 5w REG 253,1 24383 2230481 /var/log/cron (deleted) rsyslogd 819 836 in:imjour root 5w REG 253,1 24383 2230481 /var/log/cron (deleted) rsyslogd 819 840 rs:main root 5w REG 253,1 24383 2230481 /var/log/cron (deleted)
从上面命令输出可以看到,这个打开/var/log/cron文件的进程的PID是819,文件/var/log/cron的FD(文件描述符)是4,状态为deleted,标记被删除,但其实该文件并没有从磁盘中删除。
2.如果删除的文件还存在操作的进程,数据将可能被找回,可以在/proc/819/fd/5找到被删除的/var/log/cron文件;
[root@hecs-229953 local]# wc -l /proc/819/fd/5 300 /proc/819/fd/5
3.恢复被删除的/var/log/secure文件;
[root@hecs-229953 local]# touch /var/log/cron [root@hecs-229953 local]# cat /proc/819/fd/5 >/var/log/cron
在Linux系统中删除了一个文件,只要进程还在对文件进行操作,就可能还存在一个inode的引用:/proc/进程号/fd/文件描述符,只要知道当前打开文件的进程pid和文件描述符fd,即可利用lsof命令还原出被删除的文件。
vmstat 监视内存使用情况
命令格式:
vmstat [-V] [-n] [delay [count]]
命令参数
- -V表示打印出版本信息;
- -n表示在周期性循环输出时,输出的头部信息仅显示一次;
- delay是两次输出之间的延迟时间;
- count是指按照这个时间间隔统计的次数。
实例:
vmstat n m (n 为监控频率、m为监控次数)
[root@hecs-229953 local]# vmstat 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
4 0 0 499888 234532 867032 0 0 10 27 68 25 0 0 100 0 0
0 0 0 499620 234536 867040 0 0 0 10 107 233 0 0 100 0 0
1 0 0 499652 234536 867040 0 0 0 6 80 173 0 0 100 0 0
0 0 0 499652 234536 867040 0 0 0 10 59 128 0 0 100 0 0
0 0 0 499652 234536 867040 0 0 0 2 57 129 0 0 100 0 0
字段说明
-
Procs(进程):
r: 运行队列中进程数量b: 等待IO的进程数量
-
Memory(内存):
swpd: 使用虚拟内存大小free: 可用内存大小buff: 用作缓冲的内存大小cache: 用作缓存的内存大小
-
Swap:
si: 每秒从交换区写到内存的大小so: 每秒写入交换区的内存大小
-
IO:(现在的Linux版本块的大小为1024bytes)
bi: 每秒读取的块数bo: 每秒写入的块数
-
system:
in: 每秒中断数,包括时钟中断cs: 每秒上下文切换数
-
CPU(以百分比表示)
us: 用户进程执行时间(user time)sy: 系统进程执行时间(system time)id: 空闲时间(包括IO等待时间)wa: 等待IO时间
iostat 监视I/O子系统
命令格式:
iostat[参数][时间][次数]
命令参数
-C 显示CPU使用情况
-d 显示磁盘使用情况
-k 以 KB 为单位显示
-m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x 显示详细信息
-V 显示版本信息
iostat命令执行报错
执行iostat报以下错误
-bash: iostat: command not found
解决:
yum install -y sysstat
sysstat包中包括iostat,mpstat,sar,sa
显示所有设备负载情况
iostat
Linux 4.18.0-348.7.1.el8_5.x86_64 (hecs-229953) 04/26/2023 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.13 0.01 0.16 0.04 0.00 99.66
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.78 10.45 26.94 3771865 9723628
cpu属性值说明:
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
注:
%iowait的值过高,表示硬盘存在I/O瓶颈
%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
disk属性值说明:
rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/swrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/sr/s: 每秒完成的读 I/O 设备次数。即 rio/sw/s: 每秒完成的写 I/O 设备次数。即 wio/srsec/s: 每秒读扇区数。即 rsect/swsec/s: 每秒写扇区数。即 wsect/srkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。wkB/s: 每秒写K字节数。是 wsect/s 的一半。avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。avgqu-sz: 平均I/O队列长度。await: 平均每次设备I/O操作的等待时间 (毫秒)。svctm: 平均每次设备I/O操作的服务时间 (毫秒)。%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比
备注:如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有当量io在等待。
pidof
命令描述:
pidof命令用于查询指定服务进程的PID值。
命令格式:
pidof [服务名称]。
命令参数:
参数 | 说明 |
---|---|
-s | 仅返回一个进程号 |
-c | 只显示运行在root目录下的进程,这个选项只对root用户有效 |
-o | 忽略指定进程号的进程 |
-x | 显示由脚本开启的进程 |
kill
命令描述:
kill命令用于终止指定PID的服务进程。
kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。
命令格式:
kill [参数] [进程PID]。
killall
命令描述:
killall命令用于终止指定名称的服务对应的全部进程。
命令格式:
killall [进程名称]。
ifconfig
命令描述:
ifconfig命令用于获取网卡配置与网络状态等信息。
示例:
- 获取网卡配置与网络状态等信息。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.132.195 netmask 255.255.240.0 broadcast 172.16.143.255
ether 00:16:3e:27:07:6b txqueuelen 1000 (Ethernet)
RX packets 121407 bytes 166486076 (158.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 17986 bytes 3463780 (3.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
命令输出说明:
- 第一部分的第一行显示网卡状态信息。
- eth0表示第一块网卡。
- UP代表网卡开启状态。
- RUNNING代表网卡的网线被接上。
- MULTICAST表示支持组播。
- 第二行显示网卡的网络信息。
- inet(IP地址):172.16.132.195。
- broadcast(广播地址):172.16.143.255。
- netmask(掩码地址):255.255.240.0。
- RX表示接收数据包的情况,TX表示发送数据包的情况。
- lo表示主机的回环网卡,是一种特殊的网络接口,不与任何实际设备连接,而是完全由软件实现。与回环地址(127.0.0.0/8 或 ::1/128)不同,回环网卡对系统显示为一块硬件。任何发送到该网卡上的数据都将立刻被同一网卡接收到。
uname
命令描述:
uname命令用于查看系统内核与系统版本等信息。
命令语法:
uname [-amnrsv][–help][–version]
示例:
显示系统信息。
uname -a
命令输出结果:
Linux VM-16-5-centos 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
显示当前系统的硬件架构。
uname -i
命令输出结果:
x86_64
###显示操作系统发行编号。
uname -r
命令输出结果:
3.10.0-1160.11.1.el7.x86_64
显示操作系统名称。
uname -s
命令输出结果:
Linux
显示主机名称。
uname -n
命令输出结果:
VM-16-5-centos
uptime
命令描述:
uptime 用于查看系统的负载信息。
示例:
查看系统的负载信息。
uptime
14:15:19 up 28 days, 17:54, 1 user, load average: 0.00, 0.01, 0.05
命令输出说明:
负载信息 | 命令输出值 |
---|---|
当前服务器时间 | 14:15:19 |
当前服务器运行时长 | 28 days |
当前用户数 | 1 user |
当前负载情况 | load average: 0.00, 0.01, 0.05(分别取1min,5min,15min的均值) |
who
命令描述:
who 命令显示关于当前在本地系统上的所有用户的信息。
示例:
显示当前登录系统的用户
who
root pts/0 2022-10-25 13:49 (ip)
root pts/1 2022-10-25 14:25 (ip)
显示用户登录来源
who -l -H
NAME LINE TIME IDLE PID COMMENT
LOGIN tty1 2022-09-26 20:21 1569 id=tty1
LOGIN ttyS0 2022-09-26 20:21 1568 id=tyS0
只显示当前用户
who -m -H
root pts/1 2022-10-25 14:25 (ip)
精简模式显示
who -q
root root
# users=2
last
命令描述:
last 命令用于显示用户最近登录信息。
示例:
显示用户最近登录信息。
last
由于这些信息都是以日志文件的形式保存在系统中,黑客可以很容易地对内容进行篡改,所以该命令输出的信息并不能作为服务器是否被入侵的依据。
history
命令描述:
history命令用于显示历史执行过的命令。
bash默认记录1000条执行过的历史命令,被记录在~/.bash_history文件中。
#查看输过的历史命令
history
#查看某条历史记录
!行号
#查看上一条历史记录
!!
示例:
显示最新10条执行过的命令。
history 10
371 2022-10-25 14:14:22 uname -s
372 2022-10-25 14:14:41 uname -n
373 2022-10-25 14:15:19 uptime
374 2022-10-25 14:16:53 free -h
375 2022-10-25 14:25:33 who
376 2022-10-25 14:26:17 who -l -H
377 2022-10-25 14:26:50 who -m -H
378 2022-10-25 14:27:28 who -q
379 2022-10-25 14:28:59 last
380 2022-10-25 14:29:31 history 10
清除历史记录。
history -c
df
管理磁盘分区时经常会使用 df (disk free) 命令
[root@iZ2ze1w1u469cdn5e13ph8Z ~]# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 1929372 0 1929372 0% /dev
tmpfs 1939956 0 1939956 0% /dev/shm
tmpfs 1939956 500 1939456 1% /run
tmpfs 1939956 0 1939956 0% /sys/fs/cgroup
/dev/vda1 103080204 2426964 96233012 3% /
tmpfs 387992 0 387992 0% /run/user/0
每一列的含义如下:
列 | 说明 |
---|---|
Filesystem | 代表文件系统对应的设备文件的路径名(一般是硬盘上的分区)。 |
kbytes | 分区包含的数据块(1024字节)的数目。 |
used | 已用空间。 |
avail | 可用空间。 |
capacity | 已用空间的百分比。 |
Mounted on | 文件系统挂载点。 |
命令语法
#df [选项]… [文件]…
参数说明
参数 | 参数说明 |
---|---|
-a, --all | 包括伪、重复、不可访问的文件系统 |
-B, --block-size=SIZE | 打印前按大小缩放大小;例如。“-BM”以1048576字节为单位打印大小 |
–direct | 显示文件的统计信息而不是装入点 |
–total | 产生总计 |
-h, --human-readable | 人类便于阅读方式展示,(例如1K 234M 2G) |
-H, --si | 人类便于阅读方式展示,但使用1000而不是1024的幂 |
-i, --inodes | 显示inode 信息而非块使用量 |
-k | 即–block-size=1K |
-l, --local | 只显示本机的文件系统 |
–no-sync | 取得使用量数据前不进行同步动作(默认) |
–output[=FIELD_LIST] | 使用字段列表定义的输出格式,或者如果省略字段列表,则打印所有字段。 |
-P, --portability | 使用POSIX输出格式 |
–sync | 在获取使用信息之前调用同步 |
-t, --type=TYPE | 将列表限制为类型为的文件系统 |
-T, --print-type | 打印文件系统类型 |
-x, --exclude-type=TYPE | 将列表限制为非类型的文件系统 |
-v | 忽略,暂时无明确用途 |
–help | 显示此帮助信息并退出 |
–version | 显示版本信息并退出 |
du
du (disk usage) 命令可以用来查看特定目录的空间使用情况。
du 命令会显示每个目录所占用数据块。根据系统的不同,一个数据块可能是 512 字节或 1024 字节。
参数说明:
- -h 人性化显示
- -s 递归整个目录的大小
用法:
命令 | 说明 |
---|---|
du -h | 查看当前目录、所有子目录大小(以MB为计数单位) |
du -sh | 查看当前目录大小。只展示当前目录的大小,所包含的目录统计在内 |
du -sh * | 查看当前目录大小。展示所包含的所有目录大小 |
du -sh * --time | 查看当前目录大小,并展示最近更新时间 |
du -sh * |sort -rh | 查看当前目录大小,并排序 |
挂载文件系统
查看当前系统所挂载的硬件设备可以使用 mount 命令:
[root@iZ2ze1w1u469cdn5e13ph8Z /]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
一般约定,/mnt 为临时挂载目录,例如挂载CD-ROM、远程网络设备、软盘等。 也可以通过mount命令来挂载文件系统
命令语法:
mount -t file_system_type device_to_mount directory_to_mount_to
例如:
[root@hecs-229953 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 893M 0 893M 0% /dev
tmpfs 909M 0 909M 0% /dev/shm
tmpfs 909M 8.5M 900M 1% /run
tmpfs 909M 0 909M 0% /sys/fs/cgroup
/dev/vda1 40G 3.4G 34G 9% /
tmpfs 182M 0 182M 0% /run/user/0
将 /mnt/cdrom 挂载到 /dev/vda1 目录。
$ mount /dev/vda1 /mnt/cdrom
注意:file_system_type用来指定文件系统类型,通常可以不指定,Linux会自动正确选择文件系统类型。
挂载文件系统后,就可以通过 cd、cat 等命令来操作对应文件。
可以通过 umount 命令来卸载文件系统。例如,卸载 cdrom:
$ umount /dev/cdrom
不过,大部分现代的Linux系统都有自动挂载卸载功能,unmount 命令较少用到。
find
格式:
find 搜索路径 [选项] 搜索内容
按照文件名搜索
选项:
- -name: 按照文件名搜索;
- -iname: 按照文件名搜索,不区分文件名大小;
- -inum: 按照 inode 号搜索;
示例:
find /-name yum.conf
按照文件大小搜索
选项:
- -size[±]大小:按照指定大小搜索文件
**“+”**的意思是搜索比指定大小还要大的文件
“-” 的意思是搜索比指定大小还要小的文件
单位:
‘c’ for bytes
#搜索单位是c,按照字节搜索
‘w’ for two-byte words
#搜索单位是w,按照双字节(中文)搜索
'k’for Kilobytes (units of 1024 bytes)
#按照KB单位搜索,必须是小写的k
‘M’ for Megabytes (units of 1048576 bytes)
#按照MB单位搜索,必须是大写的M
‘G’ for Gigabytes (units of 1073741824 bytes)
#按照GB单位搜索,必须是大写的G
示例:
#当前目录下,査找大小刚好是25KB的文件,可以找到
find.-size 25k
#搜索小于25KB的文件,可以找到很多文件
find .-size -25k
#而当前目录下没有大于25KB的文件
find.-size +25k
按照修改时间搜索
选项:
- -atime [±]时间: 按照文件访问时间搜索
- -mtime [±]时间: 按照文改时间搜索
- -ctime [±]时间: 按照文件修改时间搜索
这三个时间的区别我们在 stat 命令中已经解释过了,这里用 mtime 数据修改时间来举例,重点说说 "[±]"时间的含义。
- -5:代表@内修改的文件。
- 5:代表前5~6天那一天修改的文件。
- +5:代表6天前修改的文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kl21Y0AQ-1682565600494)(\图片\find_mtime.jpg)]
按照权限搜索
选项:
- -perm 权限模式:査找文件权限刚好等于"权限模式"的文件
- -perm -权限模式:査找文件权限全部包含"权限模式"的文件
- -perm +权限模式:査找文件权限包含"权限模式"的任意一个权限的文件
示例:
find.-perm 200
#按照指定权限搜索文件,文件的权限必须和搜索指定的权限一致,才能找到
按照文件类型搜索
选项:
- -type d:查找目录
- -type f:查找普通文件
- -type l:查找软链接文件
逻辑运算符
选项:
- -a:and逻辑与
- -o:or逻辑或
- -not:not逻辑非
示例:
find.-size +2k -a -type f
#在当前目录下搜索大于2KB,并且文件类型是普通文件的文件
grep
-e: 使用正则搜索
-i: 不区分大小写
-v: 查找不包含指定内容的行
-w: 按单词搜索
-c: 统计匹配到的次数
-n: 显示行号
-r: 逐层遍历目录查找
-A: 显示匹配行及后面多少行, 如: -A3, 则表示显示匹配行及后3行
-B: 显示匹配行及前面多少行, 如: -B3, 则表示显示匹配行及前3行
-C: 显示匹配行前后多少行, 如: -C3, 则表示显示批量行前后3行
--color: 匹配到的内容高亮显示
--include: 指定匹配的文件类型
--exclude: 过滤不需要匹配的文件类型
sed
基本用法:
sed + 选项 + “指令” 文件
常用选项:
-e --它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时使用
-f --后跟保存了sed指令的文件
-i --直接对内容进行修改,不加 i 时默认只是预览,不会对文件进行实际修改
-n --取消默认输出,sed默认会输出所有文本内容,使用 -n 参数后只显示处理过的行
编辑命令:
a --追加,向匹配行后插入内容
c --更改,更改匹配行的内容
i --插入,向匹配行前插入内容
d --删除,删除匹配的内容
s --替换,替换匹配到的内容
p --打印,打印匹配到的内容,通常与 -n 和用
= --用来打印被匹配到的行的行号
n --读取下一行,遇到n时会自动跳入下一行
r,w --读和写,r用于将内容读入文件,w用于将匹配内容写入到文件
awk 数据流处理工具awk脚本结构
命令语法
awk ' BEGIN{ statements } statements2 END{ statements } '
- 工作方式
1.执行begin中语句块;
2.从文件或stdin中读入一行,然后执行statements2,重复这个过程,直到文件全部被读取完毕;
3.执行end语句块;
示例
echo | awk ' {var1 = "v1" ; var2 = "V2"; var3="v3"; \
print var1, var2 , var3; }'
$>v1 V2 v3
alias
执行命令输出
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
解释:
假如你输入的是rm命令,实际服务器执行的命令是 rm -i
添加别名
alias rm='rm -i'
卸载别名
unalias rm
sort 排序
字段说明
- -n 按数字进行排序
- -d 按字典序进行排序
- -r 逆序排序
- -k N 指定按第N列排序
示例:
sort -nrk 1 data.txt
sort -bd data // 忽略像空格之类的前导空白字符
paste按列拼接文本
字段说明:
-d指明定界符
示例:
[root@hecs-229953 local]# cat a.txt
第一行
第二行
第三行
[root@hecs-229953 local]# cat b.txt
A
B
C
D
[root@hecs-229953 local]# paste a.txt b.txt
第一行 A
第二行 B
第三行 C
D
[root@hecs-229953 local]# paste a.txt b.txt -d '|'
第一行|A
第二行|B
第三行|C
|D
wc 统计行和字符的工具
$wc -l file // 统计行数
$wc -w file // 统计单词数
$wc -c file // 统计字符数
print 打印当前行
- 使用不带参数的print时,会打印当前行
echo -e "line1\nline2" | awk 'BEGIN{print "start"} {print } END{ print "End" }'
- print 以逗号分割时,参数以空格定界;
echo | awk ' {var1 = "v1" ; var2 = "V2"; var3="v3"; \
print var1, var2 , var3; }'
$>v1 V2 v3
- 使用-拼接符的方式(”“作为拼接符);
echo | awk ' {var1 = "v1" ; var2 = "V2"; var3="v3"; \
print var1"-"var2"-"var3; }'
$>v1-V2-v3
ftp sftp lftp ssh 连接
SSH登陆:
$ssh ID@host
ssh登陆远程服务器host,ID为用户名。
ftp/sftp文件传输:
$sftp ID@host
登陆服务器host,ID为用户名。sftp登陆后,可以使用下面的命令进一步操作:
- get filename # 下载文件
- put filename # 上传文件
- ls # 列出host上当前路径的所有文件
- cd # 在host上更改当前路径
- lls # 列出本地主机上当前路径的所有文件
- lcd # 在本地主机更改当前路径
lftp同步文件夹(类似rsync工具):
lftp -u user:pass host
lftp user@host:~> mirror -n
scp 复制
语法
scp [参数] [原路径] [目标路径]
参数选项:
-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 保留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
示例:
scp -r ID@site:path localpath
用户管理工具
用户
添加用户
$useradd -m username
该命令为用户创建相应的帐号和用户目录/home/username;
用户添加之后,设置密码:
密码以交互方式创建:
$passwd username
删除用户
$userdel -r username
不带选项使用 userdel,只会删除用户。用户的家目录将仍会在/home目录下。要完全的删除用户信息,使用-r选项;
帐号切换 登录帐号为userA用户状态下,切换到userB用户帐号工作:
$su userB
进入交互模型,输入密码授权进入;
用户的组
将用户加入到组
默认情况下,添加用户操作也会相应的增加一个同名的组,用户属于同名组; 查看当前用户所属的组:
$groups
一个用户可以属于多个组,将用户加入到组:
$usermod -G groupNmame username
变更用户所属的根组(将用加入到新的组,并从原有的组中除去):
$usermod -g groupName username
查看系统所有组
系统的所有用户及所有组信息分别记录在两个文件中:/etc/passwd , /etc/group 默认情况下这两个文件对所有用户可读:
查看所有用户及权限:
$more /etc/passwd
查看所有的用户组及权限:
$more /etc/group
用户权限
使用ls -l可查看文件的属性字段,文件属性字段总共有10个字母组成,第一个字母表示文件类型,如果这个字母是一个减号”-”,则说明该文件是一个普通文件。字母”d”表示该文件是一个目录,字母”d”,是dirtectory(目录)的缩写。 后面的9个字母为该文件的权限标识,3个为一组,分别表示文件所属用户、用户所在组、其它用户的读写和执行权限; 例如:
[/home/weber#]ls -l /etc/group
-rwxrw-r-- colin king 725 2013-11-12 15:37 /home/colin/a
表示这个文件对文件拥有者colin这个用户可读写、可执行;对colin所在的组(king)可读可写;对其它用户只可读;
更改读写权限
使用chmod命令更改文件的读写权限,更改读写权限有两种方法,一种是字母方式,一种是数字方式
字母方式:
$chmod userMark(+|-)PermissionsMark
userMark取值:
- u:用户
- g:组
- o:其它用户
- a:所有用户
PermissionsMark取值:
- r:读
- w:写
- x:执行
例如:
$chmod a+x main 对所有用户给文件main增加可执行权限
$chmod g+w blogs 对组用户给文件blogs增加可写权限
数字方式:
数字方式直接设置所有权限,相比字母方式,更加简洁方便;
使用三位八进制数字的形式来表示权限,第一位指定属主的权限,第二位指定组权限,第三位指定其他用户的权限,每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限。
例如:
$chmod 740 main 将main的用户权限设置为rwxr-----
更改文件或目录的拥有者
$chown username dirOrFile
使用-R选项递归更改该目下所有文件的拥有者:
$chown -R weber server/
查看硬件信息
查询CPU信息:
cat /proc/cpuinfo
查看CPU的核的个数:
cat /proc/cpuinfo | grep processor | wc -l
查看内存信息:
cat /proc/meminfo
显示架构:
arch
crontab 定时任务
命令格式
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]
命令参数
- -u user:用来设定某个用户的crontab服务;
- file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
- -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
- -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
- -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
- -i:在删除用户的crontab文件时给确认提示。
crontab的文件格式
分 时 日 月 星期 要运行的命令
- 第1列分钟0~59
- 第2列小时0~23(0表示子夜)
- 第3列日1~31
- 第4列月1~12
- 第5列星期0~7(0和7表示星期天)
- 第6列要运行的命令
追加脚本到crontab
echo "0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1" >>/var/spool/cron
启动:
service cron restart