Linux 常用命令及基础知识(持续更新中...)

一、相关常用命令

1. ls 查看文件列表命令

语法: ls [-a -l -h]  [Linux路径]

  • -a -l -h 是可选的选项   (-h需配合-l命令一起使用)
  • Linux路径是此命令可选的参数
ls         #查看当前目录所有非隐藏文件(平铺方式显示)
ls -a      #查看当前目录下所有文件   -a=> all
ls -l      #查看当前目录所有非隐藏文件(列表方式显示) -l => list
ls -lh     #查看当前目录以可读方式显示  -h => human-readable 
ls -alh    #查看所有人间以可读方式显示
ls -l /root #查看/root下的文件列表 

2. cd 切换工作目录

来源: Change Directory

语法: cd [Linux路径]

  • cd命令无选项,只有参数,表示切换到哪个目录下
  • cd命令直接执行,不写参数,表示回到用户的Home目录

3. pwd 查看当前工作目录

来源: Print Work Directory

语法:pwd

  • pwd命令,无现象,无参数,直接输入pwd即可

4. mkdir创建文件夹命令

来源: Make Directory

语法: mkdir [-p] linux路径

  • 参数必填,表示Linux路径
  • -p 选项可选,表示自动创建不存在的父目录  。来源parents

5. touch、cat、more、cp、mv、rm 文件操作命令

5.1 touch 创建文件

语法:touch linux路径

  • touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径均可使用

5.2 cat查看文件

语法:cat linux路径

  • cat命令无选项,参数必填,表示要查看的文件路径,相对、绝对、特殊路径均可使用

5.3 more查看文件,可翻页

语法:more linux路径

  • more命令参数必填,表示要查看文件的路径,相对、绝对、特殊路径符都可以使用
  • 使用空格进行翻页,b查看上一页,使用q退出查看

5.4 cp 复制文件/文件夹

来源:copy

语法:cp [-r] 参数1  参数2

  • -r选项,可选,用于复制文件夹使用,表示递归,来源:recursive 
  • 参数1,linux路径,表示被复制的文件或文件夹
  • 参数2,linux路径,表示要复制去的地方

5.5 mv 移动文件/文件夹

来源: move

语法:mv 参数1 参数2

参数1,linux路径,表示被移动的文件或文件夹

参数2,linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在

5.6 rm 删除文件、文件夹

来源:remove

语法:rm [-r -f] 参数1 参数2 ... 参数N

  • -r选项,可选,用于递归删除文件夹使用,来源:recursive
  • -f选项,强制删除 (不会弹出提示确认消息)
    • 普通用户删除内容不会弹出提示,root管理员删除内容会有提示
    • 所以一般用户用不到-f选项
  • 参数1、参数2、....、参数N表示要删除的文件或文件夹路径,按照空格隔开

6. which 命令程序文件查找

语法:which 要查找的命令

我们可以通过which命令查看所使用的一系列命令的程序文件存放在哪里

7. find命令查找文件

7.1 find按文件名查找文件

语法: find 起始路径 -name "被查找文件名"

[root@master ~]# find / -name java*   #在根目录查查找以java开头的文件
find: ‘/proc/40515’: 没有那个文件或目录
find: ‘/proc/40525’: 没有那个文件或目录
/etc/pki/ca-trust/extracted/java
/etc/pki/java
/etc/java
/etc/java/java.conf
/etc/bash_completion.d/javaws.bash
/etc/alternatives/java
/etc/alternatives/java.1.gz
/etc/alternatives/javaws
/etc/alternatives/javaws.1.gz
/var/lib/alternatives/java
/var/lib/docker/overlay2/c03734f930fcd52491fceb7e388db90242d56a11f4b83474c04a45bc746ed9f8/diff/usr/share/java
/var/cache/yum/x86_64/7/updates/packages/java-1.8.0-openjdk-headless-1.8.0.332.b09-1.el7_9.x86_64.rpm
/var/cache/yum/x86_64/7/updates/packages/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64.rpm
/var/cache/yum/x86_64/7/updates/packages/java-1.8.0-openjdk-headless-1.8.0.402.b06-1.el7_9.x86_64.rpm
/var/cache/yum/x86_64/7/updates/packages/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64.rpm
/usr/bin/java
....

7.2 find按文件大小查找文件

语法:find 起始路径 -size +/-n[kMG]

  • +、- 表示大于和小于
  • n表示大小数字
  • 看MG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB

示例:

  • 查找小于10KB的文件:  find / -size -10k
  • 查找大于100MB的文件:find / -size +100M
  • 查找大于1GB的文件:    find / -size +1G
[root@master ~]# find /proc/ -size +10k
/proc/kcore

8. grep命令

可以通过grep命令,从文件中通过关键字过滤文件行。

语法: grep [-n -v] 关键字 文件路径

  • 选项-n,可选,表示在结果中显示匹配的行的行号
  • 选项-v,可选,表示在结果中过滤掉不包括的行
  • 参数,关键字,必填,表示过滤的关键字,带有空格或其他特殊符号,建议使用“ ” 将关键字包围起来
  • 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口号

9. wc数量统计命令

可以通过wc命令行统计文件的行数、单词数量等

语法: wc [-c -m -l -w] 文件路径

  • 选项,-c,统计bytes数量
  • 选项,-m,统计字符数量
  • 选项,-l,统计行数
  • 选项,-w,统计单词数量
  • 参数,文件路径,被统计的文件,可作为内容输入端口

10. | 管道符

将管道附件左边命令的结果作为右边命令的输入

11. echo 命令

可以使用echo命令在命令行内输出指定内容

语法:echo 输出的内容

  • 无需选项,只有一个参数,表示要输出的内容,复杂内容可以用“ ”包围

在终端上显示:Hello Linux

  • 带有空格或\等特符号,建议使用双引号包围。因为不包围的话,空格后很容易被识别为参数2,尽管echo不受影响,要养成好习惯

12、反引号 ` 

在控制台要用echo输出命令行的结果,可以用反引号配合使用,在编写shell脚本时会用的比较多

13、重定向符 >和>>

  • >,将左侧命令的结果,覆盖写入到符号右侧指定的文件中
  • >>,将左侧命令行的结果,追加到符号右侧指定的文件中

演示:

  •  echo "hello dolphin" >  a.txt

  • echo "hello dolphin1" > a.txt 再次执行覆盖内容

  • echo "hello dolphin2" >> a.txt 执行命令行,追加新内容


 

命令行的执行结果写入指定文件中

  • ls -l >a.txt,   ls -l命令行的结果覆盖到a.txt
  • ls >>a.txt,ls命令行的结果追加到a.txt 

14. tail命令

使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改

语法:tail [ -f -num ] Linux路径

  • 参数,linux路径,表示被跟踪的文件路径
  • 选项,-f,表示持续跟踪
  • 选项,-num,表示,查看尾部多少行,不填默认10行

15. su 和 exit 命令

su命令,用于账户切换到系统命令

来源:Switch User

语法:su [ - ] [ 用户名 ]

  • - 符号是可选的,表示是否在切换用户后加载环境变量,建议带上
  • 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
  • 切换用户后,可以通过exit命令返回上一个用户,也可以使用快捷键:ctrl + d

  • 使用普通用户,切换到其他用户需要输入密码,如切换到root用户
  • 使用root用户切换到其它用户,无需密码,可以直接切换

16. sudo 命令

        在我们得知root密码的时候,可以通过su命令切换到root得到最大权限。但是我们不建议长期使用root用户,避免带来系统损坏。

我们可以使用sudo命令,为普通的命令授权临时以root身份执行

语法:sudo  其它命令

  • 在其他命令之前,带上sudo,即可为这一条命令临时赋予root授权
  • 但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证

案例:

这里新建一个用户sudo mkdir /test-demo 创建文件夹提示 :

dolphin 不在 sudoers 文件中。此事将被报告。

# 创建用户并设置密码
[root@master ~]# useradd dolphin
[root@master ~]# passwd dolphin
更改用户 dolphin 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

# 切换dolphin用户
[root@master ~]# su - dolphin

# 普通命令在根目录创建文件夹test-demo
[dolphin@master ~]$ mkdir /test-demo
mkdir: 无法创建目录"/test-demo": 权限不够

# sudo 命令+ 命令行创建文件夹
[dolphin@master ~]$ sudo mkdir /test-demo

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] dolphin 的密码:
dolphin 不在 sudoers 文件中。此事将被报告。


visudo 为普通用户配置sudo认证

  • 切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
  • 在文件的最后添加:
dolphin ALL=(ALL)   NOPASSWD: ALL

         其中最后的NOPASSWD: ALL 表示使用sudo命令,无需输入密码

下边这种写法表示使用sudo命令,需要输入密码

dolphin ALL=(ALL)   ALL
  • 最后通过wq保存
  • 切换普通用户
  • 执行的普通命令,均以root运行

17. 用户组管理命令

  • groupadd  创建用户组

        语法:groupadd 用户组名

  • groupdel  删除用户组

        语法:groupdel 用户组名

  • getent group 查看有哪些用户组
     

        语法:gentent group

        同 cat /etc/group 一样

        

        包含3份信息,组名称:组认证(显示未x):组ID

18. 用户管理命令

  • useradd   创建用户

        语法:useradd [-g -d] 用户名

  • 选项:-g 指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
  • 选项:-d 指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
  • userdel    删除用户

        语法:userdel [ -r ] 用户名

  • 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
  • id             查看用户所属组

        语法: id [用户名]

  • 参数:用户名,被查看的用户,如果不提供则查看自身
  • usermod 修改用户所属组

        语法:usermode-aG 用户组 用户名,将指定用户加入指定用户组

[root@master ~]# id test
uid=1006(test) gid=1006(test) 组=1006(test)
[root@master ~]# getent group | tail -3
chendaoxin:x:1004:
testgroup:x:1005:
test:x:1006:
[root@master ~]# usermod -aG testgroup test
[root@master ~]# id test
uid=1006(test) gid=1006(test) 组=1006(test),1005(testgroup)

  •  getent passwd  查看有哪些用户

        语法:getent passwd

        同cat /etc/passwd 一样

      

        共有7分信息,分别是:

        用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)

19. chmod 修改文件、文件夹权限命令

注意:只有文件、文件夹的所属用户或root用户可以修改

语法:chmod [ -R ]  权限  文件或文件夹

  • 选项:-R,对文件夹内的全部内容应用同样的操作

示例:

  • chmod u=rwx,g=rx,o=x hello.txt,将文件权限修改为:rwxr-x--x 
    • 其中:u表示user用户所属用户权限,g表示group组权限,o表示other其它用户权限

      

  • chmod -R u=rwx,g=rx,o=x test,将文件夹test以及文件夹内全部内容设置为:rwxr-x--x

        

权限的数字序号

        权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。

数字的细节如下:r记为4,w记为2,x记为1,可以有:

  • 0:无任何权限,即  ---
  • 1:仅有x权限,  即  --x
  • 2:仅有w权限, 即  -w-
  • 3:有wx权限,   即  -wx
  • 4:仅有r权限,   即  r--
  • 5:有rx权限,     即  r-x
  • 6:有rw权限,    即  rw-       
  • 7:有rwx权限,  即  rwx

示例:

  • chmod u=rwx,g=rx,o=x hello.txt  等同于 chmod 751 hello.txt
  • chmod -R u=rwx,g=rx,o=x test    等同于 chmod -R 751  test

增加or删除权限

        [root@master cmdDemo]# ll
        总用量 0
        drwxr-xr-x 3 root root 30 4月   2 10:21 1
        drwxr-x--x 2 root root 36 4月   7 14:19 test

  • [root@master cmdDemo]# chmod -x 1   #给文件夹1删除可执行x权限

        [root@master cmdDemo]# ll
        总用量 0
        drw-r--r-- 3 root root 30 4月   2 10:21 1
        drwxr-x--x 2 root root 36 4月   7 14:19 test

  • [root@master cmdDemo]# chmod -r 1  #给文件夹1删除可读r权限

        [root@master cmdDemo]# ll
        总用量 0
        d-w------- 3 root root 30 4月   2 10:21 1
        drwxr-x--x 2 root root 36 4月   7 14:19 test

  • [root@master cmdDemo]# chmod +r 1  #给文件夹1增加可读权限

        [root@master cmdDemo]# ll
        总用量 0
        drw-r--r-- 3 root root 30 4月   2 10:21 1
        drwxr-x--x 2 root root 36 4月   7 14:19 test

20. chown命令 修改文件、文件夹的所属用户和用户组

注意:普通用户无法修改所有为其他用户或组,所以此命令只适用于root用户执行

语法: chown [ -R ] [ 用户 ] :[ 用户组 ]  文件或文件夹

  • 选项,-R,同chmod,对文件夹内全部内容应用相同规则
  • 选项,用户,修改所属用户
  • 选项,用户组,修改所属用户组
  • :用于分隔用户和用户组

示例:

  • chown root hello.txt,将hello.txt所属用户修改为root
  • chown :root hello.txt,将hello.txt所属用户组修改为root
  • chown root:dolphin hello.txt,将hello.txt所属用户修改为root,用户组修改为dolphin
  • chown -R root test,将文件夹test的所属用户修改为root并对文件夹内全部内容应用相同规则

21.  各类小技巧快捷键

  • ctrl + c   强制停止

  • ctrl + d 推出登录

  • history 查看历史命令

  • ! + 命令前缀    自动匹配上一个命令

  • ctrl + r,搜索历史命令

  • ctrl + a | e ,光标移到开始或结束

  • ctrl + ⬅ | ➡,左右跳单词

  • ctrl + l 或clear命令清屏

22. yum命令(Centos)

yum: RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。

语法:yum [ -y ]  [ install | remove | search ] 软件名称

  • 选项:-y,自动确认,无需手动确认安装或卸载过程
  • install:安装
  • remove:卸载
  • search:搜索

yum命令需要root权限,可以su切换到root,或使用sudo提权

yum命令需要联网

22. apt命令(Ubuntu)

同yum命令

语法:apt [ -y ]  [ install | remove | search ] 软件名称

  • 选项:-y,自动确认,无需手动确认安装或卸载过程
  • install:安装
  • remove:卸载
  • search:搜索

23. systemctl命令

Linux系统很容软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启

能够被systemctl管理的软件,一般也称之为:服务

语法: systemctl start | stop | status | enable | disable 服务名称

  • start       启动
  • stop       关闭
  • status     查看你状态
  • enable    开机自启
  • disable   关闭开机自启

系统内置的服务比较多,比如:

  • NetworkManager,主网络服务
  • network,副网络服务
  • firewalld,防火墙服务
  • sshd,ssh 服务

24. ln命令创建软链接

在系统中创建软链接,可以将文件、文件夹链接到其它位置。

类似window系统中的快捷键方式

语法: ln -s 参数1  参数2

  • -s选项,创建软链接
  • 参数1:被链接的文件或文件夹
  • 参数2:要链接去的目的地

实例:

创建

删除

25. date日期命令

(1)date命令用法

通过date命令可以在命令行中查看系统的时间

语法:date [ -d ] [ +格式化字符串 ]

  • -d,选项,按照规定的日期,一般用于日期计算
  • 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
    • %Y  年
    • %y  年份后两位数字(00,99)
    • %m  月份(01,12)
    • %d  日(01,31)
    • %H  小时(00,23)
    • %M  分钟(00,59)
    • %S  秒(00,60)
    • %s  自 1970-01-01 00:00:00 UTC到现在都秒数
[root@master ~]# date
2024年 04月 10日 星期三 22:44:07 CST
[root@master ~]# date "+%Y-%m-%d %H"
2024-04-10 22
[root@master ~]# date "+%Y-%m-%d %H:%M"
2024-04-10 22:45
[root@master ~]# date "+%Y-%m-%d %H:%M:%S"
2024-04-10 22:45:33
[root@master ~]# date "+%Y-%m-%d %H:%M:%S %s" 
2024-04-10 22:45:38 1712760338

(2)date命令日期加减计算

-d 支持的时间标记为:

  • year      年
  • month   月
  • day       天
  • Minute  分钟
  • second  秒
[root@master ~]# date "+%Y-%m-%d %H:%M:%S" 
2024-04-10 22:49:53
[root@master ~]# date -d "-1 day" "+%Y-%m-%d %H:%M:%S" 
2024-04-09 22:49:59
[root@master ~]# date -d "+1 day" "+%Y-%m-%d %H:%M:%S" 
2024-04-11 22:50:04
[root@master ~]# date -d "-1 mounth" "+%Y-%m-%d %H:%M:%S" 
date: 无效的日期"-1 mounth"
[root@master ~]# date -d "-1 month" "+%Y-%m-%d %H:%M:%S" 
2024-03-10 22:50:28
[root@master ~]# date -d "-1 year" "+%Y-%m-%d %H:%M:%S" 
2023-04-10 22:50:44
[root@master ~]# date -d "+1 year" "+%Y-%m-%d %H:%M:%S" 
2025-04-10 22:50:51
[root@master ~]# date -d "+1 Minute" "+%Y-%m-%d %H:%M:%S" 
2024-04-10 22:55:25
[root@master ~]# date -d "+1 minute" "+%Y-%m-%d %H:%M:%S" 
2024-04-10 22:55:31

(3)修改Linux时区

使用root权限,执行如下命令,修改为东八区

rm rf /etc/locatime
ln -s /usr/share/zoneinf/Asia/Shanghai /etc/locatime

(4)ntp程序

我们可以通过ntp程序自动校准系统时间

安装ntp: yum -y install ntp

启动并开机自启:

  • systemctl start ntpd
  • systemctl enable ntpd

ntpd启动后会定期的帮助我们联网校准系统的时间

也可以手动校准(需要root权限):ntpdate -u ntp.aliyun.com

26. ifconfig 查看IP地址

可以通过ifconfig,查看本机的IP地址

如无法使用ifconfig命令,可以安装: yum -y install net-tools

特殊的IP地址

  • 127.0.0.1

        这个IP地址用于指代本机

  • 0.0.0.0
    • 可以用于指代本机
    • 可以在端口绑定中用来确定绑定关系
    • 在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问

27. ping命令

可以通过ping命令,检查指定的网络服务是否是可联通状态

语法:ping [ -c num ] ip或主机名

  • 选项:-c,检查的次数,不使用-c选项,将无限次数持续检查
  • 参数:ip或主机名,被检查的服务的ip地址或主机名地址

示例:

[root@master ~]# ping baidu.com  # 无限次
PING baidu.com (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=128 time=34.2 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=128 time=34.2 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=3 ttl=128 time=32.8 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=4 ttl=128 time=33.3 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=5 ttl=128 time=33.7 ms
^C #ctrl+c退出
--- baidu.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 32.886/33.689/34.284/0.543 ms
[root@master ~]# ping -c 3 39.156.66.10  # 检查3次后退出
PING 39.156.66.10 (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10: icmp_seq=1 ttl=128 time=33.7 ms
64 bytes from 39.156.66.10: icmp_seq=2 ttl=128 time=33.4 ms
64 bytes from 39.156.66.10: icmp_seq=3 ttl=128 time=33.1 ms
--- 39.156.66.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 33.109/33.436/33.744/0.259 ms

28. wget命令

wget是非交互式的文件下载器,可以在命令行内下载网络文件

语法: wget [ -b ] url

  • 选项:-b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件
  • 参数:url,下载链接

示例:

# 直接下载
[root@master ~]# wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
--2024-04-11 10:56:09--  http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
正在解析主机 archive.apache.org (archive.apache.org)... 65.108.204.189, 2a01:4f9:1a:a084::2
正在连接 archive.apache.org (archive.apache.org)|65.108.204.189|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 301 Moved Permanently
位置:https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz [跟随至新的 URL]
--2024-04-11 10:56:09--  https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
正在连接 archive.apache.org (archive.apache.org)|65.108.204.189|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:500749234 (478M) [application/x-gzip]
正在保存至: “hadoop-3.3.0.tar.gz.1”

 0% [                                                                                                                                                                         ] 295,881     72.6KB/s 剩余 1h 43m 
#后台下载示例
[root@master ~]# wget -b http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
继续在后台运行,pid 为 48344。
将把输出写入至 “wget-log”。
[root@master ~]# tail -f wget-log  #通过tail命令可以监控后台下载进度
  2750K .......... .......... .......... .......... ..........  0% 2.59M 21m30s
  2800K .......... .......... .......... .......... ..........  0%  190K 21m52s
  2850K .......... .......... .......... .......... ..........  0%  166K 22m20s
  2900K .......... .......... .......... .......... ..........  0% 86.2K 23m33s
  2950K .......... .......... .......... .......... ..........  0% 73.0M 23m9s
  3000K .......... .......... .......... .......... ..........  0%  147K 23m40s
  3050K .......... .......... .......... .......... ..........  0%  166K 24m5s
  3100K .......... .......... .......... .......... ..........  0% 86.1K 25m11s
  3150K .......... .......... .......... .......... ..........  0%  483K 25m3s
  3200K .......... .......... .......... .......... ..........  0%  113K 25m46s
  3250K .......... .......... .......... .......... ..........  0% 79.4K 26m55s
  3300K .......... .......... .......... .......... ..........  0%  128K 27m27s
  3350K .......... .......... .......... .......... ..........  0% 62.9K 28m56s
  3400K .......... .......... .......... .......... ..........  0% 59.3K 30m30s
  3450K .......... .......... .......... .......... ..........  0% 80.0K 31m30s
  3500K .......... .......... .......... .......... ..........  0% 56.9K 33m3s
  3550K .......... .......... .......... .......... ..........  0% 73.8K 34m7s
  3600K .......... .......^C

29. curl 命令

curl可以发送http网络请求,可用于下载文件、获取信息等

语法: curl [ -O ] url

  • 选项: -O,用于下载文件,当url是下载链接时,可以用次选项保存文件
  • 参数:url,要发起请求的网络地址

二、 基础知识

1 端口

端口,是设备与外界通讯交流的出入口。端口可分为:物理端口和虚拟端口两类

1.1 物理端口

        物理端口又可以称之为接口,是可见端口,如usb接口RJ45网口HDMI端口

1.2 虚拟端口

        虚拟端口是指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的。

        计算机之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。通过端口可以锁定计算机上的具体程序,确保程序之间进行沟通。

IP地址相当于小区地址,在小区内可以有许多住户(程序),而门牌号(端口)就是各个住户(程序)的联系地址。

Linux系统好比一个超大小区,可以支持65535个端口,这6万多个端口分为3类进行使用:

  • 公认端口:1~1023

        通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口,非特殊需要不要占用这个范围的端口

  • 注册端口:1024~49151

        通常可以随意使用,用于松散的板锭一些程序/服务

  • 动态端口:49152~65533        

        通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用

1.3 nmap命令查看端口占用

        语法:nmap  IP地址       ,安装nmap:yum -y install nmap

通过命令看到,本机(127.0.0.1)上有6个端口被程序占用了

1.4 netstat命令查看指定端口占用情况

        语法:netstat -anp | grep 端口号,安装netstat:yum -y install net-tools

 如图,可以看到当前系统61616端口被程序(进程号13061)占用

其中,0.0.0.0:111  ,表示端口绑定在0.0.0.0这个IP地址上,表示允许外部访问

2. 进程 

2.1 ps命令查看进程

        语法: ps [ -e -f ]

        选项:-e,显示全部的进程

        选项:-f,以完全格式化的形式展示信息(展示全部信息)

一般来说,固定用法就是:ps -ef 列出全部进程的全部信息

从左到右分别是:

  • UID:  进程所属的用户
  • PID:  进程的进程号ID
  • PPID:进程的父ID(启动此进程的其它进程)
  • C:      进程的CPU占用率(百分比)
  • STIME:进程的启动时间
  • TTY:  启动此进程的终端序号,如显示?表示非终端启动
  • TIME:进程占用CPU的时间
  • CMD: 表示进程的对应名称或启动路径或启动命令

2.2 kill关闭进程

        语法: kill [ -9 ] 进程ID

        选项: -9,表示强制关闭进程

2.3 top命令 查看CPU、内存、进程信息

        语法:top [ -p -d -c -n -b -i -u ] 

        选项:

-p: 只显示某个进程的信息

-d: 设置刷新时间,默认是5秒

-c: 显示产生进程的完整命令,默认是进程名

-n: 指定刷新次数,比如 top -n -3,刷新输出3次后退出

-b:以非交互全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件,比如 top -b -n 3 > /tmp/top.tmp

-i: 不显示任何限制(idle)或无用(zombie)的进程

-u: 查找指定用户启动的进程

交互式选项:

当top以交互式运行(非-b选项启动),可以用一下交互式命令进行控制

按键       功能

h键     按下h键盘,会显示帮助画面

c键     按下c键盘,会显示陈胜进程的完整命令,等同于-c参数,再次按c键,变为默认显示

f 键     按下f键盘,可以选择需要展示的项目

M键     按下M键盘,根据驻留内存大小(RES)排序

P键     按下P键盘,根据CPU使用百分比大小进行排序

T键     按下T键盘,根据时间/累计时间进行排序

E键     按下E键盘,切换顶部内存显示单位

e键     按下e键盘,切换进程内存显示单位

l键     按下l键盘,切换显示平均负载和启动时间信息

i键     按下i键盘,不显示闲置或无用的进程,等同于-i参数,再次按下,变为默认显示

t键     按下t键盘,切换显示CPU状态信息

m键     按下m键盘,切换显示内存信息

执行top命令

  • 第一行

        top:命令名称;00:37:26:当前系统时间;up 1 day,3:07:启动1天3小时7分钟;4users:4个用户登录;load:1、5、15分钟负载

  • 第二行

        Tasks: 175个进程;2 runing:2个进程正在运行;243 sleeping:243个进程睡眠;0 stopped:0个停止进程;0 zombie:0个僵尸进程

  • 第三行

        CPU:9.7 us:用户CPU使用率9.7;36.6 sy:系统cpu使用率36.6;0.0 ni:高优先级进程占用CPU时间百分比0.0%;53.0 id:CPU空闲率53%;0.1 wa:IO等待CPU占用率;hi:CPU硬件中断率0.0%;0.6 si:CPU软件中断率;0.0 st:强制等待占用CPU率

  • 第四五行

KiB Mem:物理内存;total:总内存;free:空闲内存;used:已使用内存;buff/cache:buff和cache占用;

KiB Swap:虚拟内存(交换空间);total:总内存;free:空闲内存;used:已使用内存;buff/cache:buff和cache占用;

 

  • PID:进程ID
  • USER:进程所属用户
  • PR:进程优先级,越小越高
  • NI:负值表示高优先级,正表示低优先级
  • VIRT:进程使用虚拟内存,单位kb
  • RES:进程使用物理内存,单位kb
  • SHR:进程使用共享内存,单位kb
  • S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)
  • %CPU:进程占用CPU率
  • %MEM:进程占用内存率
  • TIME+:进程使用CPU时间总计,单位10毫秒
  • COMMAND:进程的命令或名称或程序文件路径

2.4 df 命令查看磁盘使用率

        语法: df [ -h ]

        选项:-h,以更加人性化的单位显示

2.5 iostat 命令查看磁盘速率等信息

        语法:iostat [ -x ] [ num1 ] [ num2 ]

  •         选项: -x ,显示更多信息
  •         num1:数字,刷新间隔时间,num2:数字,刷新几次

tps: 该设备每秒传输次数。

rrqm/s :每秒这个设备的相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的时候相同Block的数据,FS会将这个请求合并Merge,提高IO利用率,避免重复调用)

wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。

rsec/s:每秒读取的扇区数;sectors

wsec/s: 每秒写入到扇区数

rkB/s:每秒发送到设备的读取请求数

wkB/s:每秒发送到设备的写入请求数

avgrq-sz:平均请求扇区的大小

avgqu-sz:平均请求队列的长度。毫无疑问,队列长度越短越好

await:每一个IO请求的处理的平均时间(单位是微妙毫秒)

svctm: 表示平均每次设备I/O操作的服务时间(以毫秒为单位)

%util :磁盘利用率

2.6 sar -n DEV查看网络情况

        语法:sar -n DEV num1 num2

        选项: -n , 查看网络,DEV表示查看网络接口

        num1:刷新间隔(不填就查看一次结束)   num2:查看次数(不填无限次数)

IFACE:  本地网络接口的名称

rxpck/s:     每秒接收的数据包

txpck/s:    每秒发送的数据包

rxkB/s      每秒接收到数据包大小,单位kb

txkB/s      每秒发送到数据包大小,单位kb

rxcmp/s     每秒接受的压缩数据包

txcmp/s    每秒发送到压缩包

rxmcst/s    每秒接收到多播数据包

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值