liunx笔记

快捷键

#移动到行首
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 下午)
%R24 小时时间的时和分,等价于 %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进程的优先级别,越小越优先被执行
NInice值。负值表示高优先级,正值表示低优先级
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

img

清除历史记录。

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值