liunx笔记

news2024/11/24 9:49:38

快捷键

#移动到行首
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/467483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈浏览器调试

浅谈浏览器调试 1. 假设你在控制台打印了一个变量 &#xff0c; 想在浏览器追踪从哪里来要到那里去&#xff1a;2. 开启source maps3. watch 可以监听当前变量, 也可以在scope中看当前作用域的变量&#xff1a;4. call Stack 可以查看当前调用链, 找到对应代码进行debugger5. 你…

TCP / IP 五层网络模型

目录 一、协议的概念 1.1 网络通信为什么需要使用协议 二、网络模型 2.1 OSI 七层模型 三、TCP / IP 五层网络模型 四、协议分层的背景下&#xff0c;数据如何通过网络传输&#xff1f; 4.1 再谈协议 4.2 封装 / 分用 vs 序列化 / 反序列化 4.3 什么是端口号 4.4 什么…

创新实践|导致创新团队敏捷实践失败的12种原因

揭示敏捷实践中常犯的12大错误&#xff0c;了解如何避免这些敏捷失败 陷阱&#xff0c;找出问题根源并采取有效改进措施&#xff0c;提高项目成功率。立即连线 Runwise.co 社区敏捷专家获得专业建议&#xff0c;或 Runwise.co 在线学习敏捷方法实战课程&#xff0c;提升您和团队…

layui入门使用文档(包含几个重要的组件)

一、引言 &#xff1a;注意部分配置是用到了和jsp交互使用在HTML时需要修改 1.1 介绍 https://www.layuiweb.com/ 在官网首页&#xff0c;可以很方便的下载LayUI LayUI 是一款经典模块化前端 UI 框架&#xff0c;我们只需要定义简单的HTML、CSS、JS即可实现很复杂的前端效果。 …

Vue3之setup参数介绍

setup(props, context) {... }一、参数 使用setup函数时&#xff0c;它将接受两个参数&#xff1a; propscontext 让我们更深入地研究如何使用每个参数 二、Props setup函数中的第一个参数是props。正如在一个标准组件中所期望的那样&#xff0c;setup函数中的props是响应…

Elasticsearch:Explicit mapping - 显式映射

显式映射相比较动态映射&#xff08;Dynamic mapping&#xff09;是需要我们在索引创建时就定义字段及其类型。这个和我们传统的 RDMS 数据库一样&#xff0c;在我们写入数据到数据库之前&#xff0c;我们需要工整地定义好每个字段及其类型和长度。Elasticsearch 既可以使用显式…

【C++】二叉搜索树(概念、实现、应用)

前言&#xff1a; 此前我们在C语言实现数据结构的时候学习过二叉树&#xff0c;但是那个时候我们没有深入学习二叉搜索树。本章重提二叉树并详解二叉搜索树有下面两个原因&#xff1a; 1、为我们下一章学习set和map做准备&#xff1b;2、详解我们进阶一点的二叉树的面试OJ题&a…

【C++学习】日积月累——二叉搜索树详解

一、二叉搜索树 1.1 二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值&#xff1b;若它的右子树不为空&#xff0c;则右子树上…

程序员常用的代码比较工具,你更喜欢哪款?

目录 &#x1f4a1; Linux 命令行的对比工具 一. diff 二. vimdiff命令 &#x1f4a1; GUI 比对工具 三. WinMerge 四. Diffuse 五. Code Compare 六. Beyond Compare 七. UltraCompare 八. Altova DiffDog 九. Kompare 十. Meld 十一. XXdiff 十二. KDiff3 十…

拓扑排序模板及例题

概念 一个有向无环图必然存在一个拓扑序列与之对应。 流程&#xff1a; 先将所有入度为0的节点入队将队列中的节点出队&#xff0c;出队序列就是对应拓扑序。对于弹出的节点x&#xff0c;遍历x所有出度y&#xff0c;对y进行入读减一操作检查入度减一之后的节点y&#xff0c;…

慈航公益·高莞乡情行

2023年4月9日&#xff0c;慈航公益高莞乡情行---高村陈屋第二届“敬老睦宗情暖乡土”活动日暨“英华教育奖学基金”成立大会在高村陈屋如期举行。 高村陈屋位于河源市连平县境内&#xff0c;为了赶上10点开始的活动&#xff0c;清晨六点半&#xff0c;志愿者们便从慈航出发&am…

12电感的应用

目录 一、电源电路使用 1、设计实例 二、高频电路中使用 1、选择Q值高的电感器 2、选择自谐振频率高的电感器 3、选择电感偏差小的电感器 三、控制振荡频率 四、确保高频信号的隔离 五、共模轭流线圈 一、电源电路使用 如式&#xff08;5&#xff09;所示&#xff0c;…

数码照片管理系统Damselfly

什么是 Damselfly &#xff1f; Damselfly 是一个基于服务器的数码照片管理系统。Damselfly 旨在管理基于文件夹的大型照片集合&#xff0c;特别关注快速搜索和关键字标记工作流程。Damselfly 包含强大的机器学习功能&#xff0c;可帮助您识别照片及其主体&#xff0c;包括人脸…

使用Socks5代理保障Windows网络安全

摘要&#xff1a;Socks5代理是一种在Windows系统中保障网络安全的有效方法。本文将详细介绍什么是Socks5代理&#xff0c;以及如何在Windows系统中使用Socks5代理来加强网络安全。同时&#xff0c;我们还将探讨如何编写代码来使用Socks5代理来保障应用程序的网络安全。 正文&am…

报表VS分析:为什么报表做不完?老板到底想要什么?

各位数据的朋友&#xff0c;大家好&#xff0c;我是老周道数据&#xff0c;和你一起&#xff0c;用常人思维数据分析&#xff0c;通过数据讲故事。 上一讲和大家讲了分析模型中的战斗机——财务分析模型。通过奥威BI软件的行计算模型来开发财务分析报表异常地简单&#xff0c;…

安装Django

1. 在物理环境安装Django Python官方的PyPi仓库为我们提供了一个统一的代码托管仓库&#xff0c;所有的第三方库&#xff0c;甚至你自己写的开源模块&#xff0c;都可以发布到这里&#xff0c;让全世界的人分享下载 pip是最有名的Python包管理工具 。提供了对Python包的查找、…

Linux 动态库的制作与使用

目录 动态库的制作和使用 动态库的制作和使用 原始结构如下&#xff1a; 先进入calc文件&#xff0c;并生成与位置无关的.o文件 接着生成动态文件库&#xff0c;使用ll指令可以看到&#xff0c;库名为绿色&#xff0c;linux中绿色的文件一般都是可执行文件 将其生成的lib…

如何快速搭建一个SpringBoot项目

前面我们了解了SpringBoot背景和特点&#xff0c;本节我们主要介绍如何快速构建一个SpringBoot项目&#xff0c;以此来提升日常开发效率。 SpringBoot是搭建应用的手脚架&#xff0c;由Spring公司的核心团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。…

如何平衡倾斜摄影的三维模型轻量化数据文件大小和质量效果?

如何平衡倾斜摄影的三维模型轻量化数据文件大小和质量效果&#xff1f; 倾斜摄影超大场景的三维模型数据文件大小的具体范围取决于多种因素&#xff0c;如原始数据的复杂度、轻量化处理的方式和压缩算法等。一般而言&#xff0c;经过轻量化处理后&#xff0c;数据文件大小可以减…

centos7安装nginx及uwsgi部署django项目

1、安装配置uwsgi pip install uwsgi 2、在项目根目录下创建image_ocr_uwsgi.ini配置文件 [uwsgi] # 对外提供http服务的端口 http :9000 # 用于和nginx进行数据交互的端口 socket 127.0.0.1:8001 # django程序的主目录 chdir /home/image_process/image_ocr/image_ocr #…