Linux详解--中

79 阅读49分钟

五、VIM编辑器

1、VIM简介

vi 是老式的文字处理器,所有的 Unix Like 系统都会内建 vi 文本编辑器,功能已经很齐全了,但是还是有可以进步的地方。

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。尤其是Linux中,必须要会使用Vim(查看内容,编辑内容,保存内容!)

2、VIM键盘图

b7886b96e7c1c4097d5cc76db5d979c8

3、三种命令模式

(1)命令模式

可以进行行删除、复制等命令的输入,相当于快键键。 默认进入的就是命令模式。

(2)输入模式

可以进行文本的输入。

(3)底线命令模式

是执行保存、退出等指令用。

61f84794a56b208bbc83092670e384e5

vim filename

1637572297414

4、命令模式说明

(1)命令模式

光标移动

  • h:左移;
  • j:下移;
  • k:上移;
  • l:右移;
  • M:移到中间行;
  • L:移到屏幕最后一行行首;
  • G:移动到指定行 行号-G
  • W:向后移动一个字;
  • Ctrl+d:向下翻半屏;
  • Ctrl+u:向上翻半屏;
  • ctrl+b:向上翻一屏;b→backward;
  • ctrl+f:向下翻一屏; f→forward;
  • gg:光标移动到文件开头;
  • shift+^:移到行首;
  • shift +$:移到行尾;

删除

  • x :删除光标前一个字符;
  • X:删除光标后一个字符;
  • dw:删除一个单词;
  • dl:删除一个字母;
  • dd:删除一行;
  • d5d:删除5行;

复制

  • yw:复制一个单词;
  • yl:复制一个字母;
  • yy:复制一行;
  • y5y:复制5行;

撤销,恢复

  • u:撤销上一次的操作;
  • ctrl+r:反撤销,撤销的命令重做;

剪切

  • cw:剪切一个单词;
  • cl:剪切一个字母;
  • cc:剪切一行;
  • c5c:剪切5行;

粘贴

  • p:粘贴;

(2)插入模式

  • i :光标所在位置插入;
  • I: 光标所在位置行首插入;
  • o: 光标所在位置下方新开一行插入;
  • O: 光标所在位置上方新开一行插入;
  • a: 光标所在位置下一个字符的位置插入;a→append(附加);
  • A: 光标所在位置行行尾插入;

(3)底线命令模式

  • w:写入文件
  • w:文件名 另存文件
  • q:退出
  • q!:不保存退出
  • !cmd:执行命令
  • /:查找命令
  • s/old/new/:替换命令
  • set nu:设置命令

六、权限管理

  • Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

  • 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

  • 每个用户账号都拥有一个唯一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

  • 你一般在公司中,用的应该都不是 root 账户!

1、用户管理

(1)whoami(打印当前登录用户)

whoami命令是打印与当前有效用户ID关联的用户名;这个工具可以用来获取本地系统上当前用户(访问令牌)的用户名和组信息,以及相应的安全标识符(SID)、声明、本地系统上当前用户的权限、登录标识符(登录 ID)。

whoami命令显示自身的用户名称,本指令相当于执行”id -un”指令。

语法格式:whoami [参数]

常用参数

--help在线帮助
--version显示版本信息

参考实例

[root@bluecusliyou ~]# whoami
root

(2)who(查看当前登录用户信息)

who命令的功能是用于显示当前登录用户信息,包含登录的用户名、终端、日期时间、进程等信息,帮助运维人员了解当前系统的登入用户情况。

语法格式: who [参数]

常用参数:

-a全面信息
-b系统最近启动时间
-d死掉的进程
-l系统登录进程
-H带有列标题打印用户名,终端和时间
-t系统上次锁定时间
-u已登录用户列表

参考实例

# 查看当前账号
[root@bluecusliyou ~]# who
root     pts/0        2021-11-23 09:29 (112.87.128.140)
# 带有列标题打印
[root@bluecusliyou ~]# who -H
NAME     LINE         TIME             COMMENT
root     pts/0        2021-11-23 09:29 (112.87.128.140)
# 打印全部信息
[root@bluecusliyou ~]# who -H -a
NAME       LINE         TIME             IDLE          PID COMMENT  EXIT
           system boot  2021-11-03 23:58
           run-level 3  2021-11-03 15:58
LOGIN      ttyS0        2021-11-03 15:58              1024 id=tyS0
LOGIN      tty1         2021-11-03 15:58              1023 id=tty1
root     + pts/0        2021-11-23 09:29   .        204944 (112.87.128.140)
# 打印系统最近启动时间
[root@bluecusliyou ~]# who -b
         system boot  2021-11-03 23:58
# 打印系统登录进程
[root@bluecusliyou ~]# who -l
LOGIN    ttyS0        2021-11-03 15:58              1024 id=tyS0
LOGIN    tty1         2021-11-03 15:58              1023 id=tty1

(3)exit(退出终端)

  • 如果是图形界面,退出当前终端;
  • 如果是使用ssh远程登录,退出登陆账户;
  • 如果是切换后的登陆用户,退出则返回上一个登陆账号。
  • ctrl+d等价于exit。

**语法格式:**exit [状态值]

常用参数:

0执行成功
1执行失败
$?参照上一个状态值

(4)useradd(添加用户)

  • Linux每个用户都要有一个主目录,主目录就是第一次登陆系统,用户的默认当前目录(/home/用户);
  • 每一个用户必须有一个主目录,所以用useradd创建用户的时候,一定给用户指定一个主目录(或者自动默认创建);
  • 用户的主目录一般要放到根目录的home目录下,用户的主目录和用户名是相同的;
  • 如果创建用户的时候,不指定组名,那么系统会自动创建一个和用户名一样的组名。
  • 已创建的用户则需使用chmod命令修改账户信息,passwd命令修改密码信息。

**语法格式:**useradd [参数] 用户名

常用参数:

-D改变新建用户的预设值
-c添加备注文字
-d新用户每次登陆时所使用的家目录
-e用户终止日期,日期的格式为YYYY-MM-DD
-f用户过期几日后永久停权。当值为0时用户立即被停权,而值为-1时则关闭此功能,预设值为-1
-g指定用户对应的用户组
-G定义此用户为多个不同组的成员
-m用户目录不存在时则自动创建
-M不建立用户家目录,优先于/etc/login.defs文件设定
-n取消建立以用户名称为名的群组
-r建立系统帐号
-u指定用户id

参考实例

# 创建用户名,并且创建与用户名相同的目录和用户组
[root@bluecusliyou ~]# useradd -m liyou1
[root@bluecusliyou home]# ls
liyou1
# 指定用户目录
[root@bluecusliyou home]# useradd -d /home/liyouxx -m liyou2
[root@bluecusliyou home]# ls
liyou1  liyouxx
# 指定用户组
[root@bluecusliyou home]# useradd -g ftp liyou3
[root@bluecusliyou home]# ls
liyou1  liyouxx  liyou3
# 指定用户密码
[root@bluecusliyou home]# useradd -p 123456 liyou4
[root@bluecusliyou home]# cat /etc/shadow
...
liyou1:!!:18954:0:99999:7:::
liyou2:!!:18954:0:99999:7:::
liyou3:!!:18954:0:99999:7:::
liyou4:123456:18954:0:99999:7:::

(5)passwd(修改用户的密码值)

passwd命令来自于英文单词password的缩写,其功能适用于修改用户的密码值。同时也可以对用户进行锁定等操作,但需要管理员身份才可以执行。

**常用格式:**passwd [参数] 用户名

常用参数:

-d删除已有密码
-l锁定用户的密码值,不允许修改
-u解锁用户的密码值,允许修改
-e下次登陆强制修改密码
-k用户在期满后能仍能使用
-S查询密码状态

参考实例

# 设定当前用户密码
[root@bluecusliyou home]# passwd
# 设置用户密码 两次确认
[root@bluecusliyou home]# passwd liyou1
Changing password for user liyou1.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
# 锁定密码不允许用户修改
[root@bluecusliyou home]# passwd -l liyou1
Locking password for user liyou1.
passwd: Success
# 解除锁定密码,允许用户修改
[root@bluecusliyou home]# passwd -u liyou1
Unlocking password for user liyou1.
passwd: Success
# 下次登陆强制改密码
[root@bluecusliyou home]# passwd -e liyou1
Expiring password for user liyou1.
passwd: Success
# 移出用户密码
[root@bluecusliyou home]# passwd -d liyou1
Removing password for user liyou1.
passwd: Success
# 查看密码状态
[root@bluecusliyou home]# passwd -S liyou1
liyou1 NP 2021-11-23 0 99999 7 -1 (Empty password.)

(6)userdel(删除用户)

userdel命令来自于英文词组“user delete”的缩写,其功能是删除用户账户。Linux系统中一切都是文件,用户信息被保存到了/etc/passwd、/etc/shadow以及/etc/group文件中,因此使用userdel命令实际就是帮助我们删除了指定用户在上述三个文件中的对应信息。

**语法格式:**userdel [参数] 用户名

常用参数:

-f强制删除用户账号
-r删除用户主目录及其中的任何文件
-h显示命令的帮助信息

参考实例

#删除用户,但不删除其家目录及文件
[root@bluecusliyou home]# userdel liyou2
# 删除用户,并将其家目录及文件一并删除
[root@bluecusliyou home]# userdel -r liyou3
# 强制删除用户
[root@bluecusliyou home]# userdel -f liyou1
userdel: user liyou1 is currently used by process 208027

(7)sudo(授权普通用户执行管理员命令)

sudo命令来自于英文词组“super user do”的缩写,中文译为“超级用户才能干的事”,其功能是用于授权普通用户执行管理员命令。使用su命令变更用户身份虽然好用,但是需要将管理员的账户密码告诉他人,总感觉心里不踏实,幸好有了sudo服务。

使用sudo服务可以授权某个指定的用户去执行某些指定的命令,在满足工作需求的前提下尽可能少的放权,保证服务器的安全。配置sudo服务可以直接编辑配置文件/etc/sudoers,亦可以执行visudo命令进行设置,一切妥当后普通用户便能够使用sudo命令进行操作了。

为新用户添加sudo权限,接使用 vi 或者 vim 命名“vi /etc/sudoers”进入编辑模式(visudo命令),在“root ALL=(ALL) ALL”这一行下面添加一行“liyou ALL=(ALL) ALL”,然后保存退出即可。(注明:liyou 为你的用户名)

**语法格式:**sudo [参数] 命令

常用参数:

-v本次需要验证当前用户的密码
-k下次强制验证当前用户的密码
-b将要执行的指令放在后台执行
-p更改需要密码验证时的提示语
-s指定默认调用的SHELL解释器

参考实例

# 查看当前用户有哪些被sudo服务授权的命令
[root@bluecusliyou ~]# sudo -l
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS
    DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS
    LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
    LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
    XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

用户 root 可以在 bluecusliyou 上运行以下命令:
    (ALL) ALL
# 使用某个被sudo服务允许的用户身份来执行管理员的重启命令
[root@bluecusliyou ~]# sudo -u liyou "reboot"
# 使用当前用户身份,基于sudo命令来执行管理员的重启命令
[root@bluecusliyou ~]# sudo reboot

(8)su(切换用户身份)

  • su命令来自于英文单词“switch user”的缩写,其功能是用于切换用户身份。
  • 普通用户切换到root用户,可以使用su -- 或su root,但是必须输入root密码才能完成切换。root用户切换到普通用户,可以使用su username,不需要输入任何密码即可完成切换。
  • 添加单个减号(-)参数为完全的身份变更,不保留任何之前用户的环境变量信息。

语法格式: su [参数] 用户名

常用参数:

单个减号(-)完全身份变更
-c执行完指定的指令后,即恢复原来的身份
-f适用于csh与tsch,使shell不用去读取启动文件
-l改变身份时,也同时变更工作目录
-m变更身份时,不要变更环境变量
-s指定要执行的shell
--help显示帮助信息
--version显示版本信息

参考实例

# 变更至指定用户身份
[root@bluecusliyou home]# su root
# 完全变更至指定用户身份
[root@bluecusliyou home]# su - root
Last login: Tue Nov 23 16:10:52 CST 2021 on pts/0
[root@bluecusliyou ~]#

(9)usermod(修改用户账号信息)

usermod命令来自于英文词组“user modify”的缩写,其功能是用于修改用户账号中的各项参数。

**语法格式:**usermod [参数] 用户名

常用参数:

-c<备注>修改用户账号的备注文字
-d<登入目录>修改用户登入时的家目录
-e<有效期限>修改账号的有效期限
-f<缓冲天数>修改在密码过期后多少天即关闭该账号
-g<群组>修改用户所属的群组
-G<群组>修改用户所属的附加群组
-l<账号名称>修改用户账号名称
-L锁定用户密码,使密码无效
-s修改用户登入后所使用的shell
-u修改用户ID
-U解除密码锁定

参考实例

# 更改登陆目录
[root@bluecusliyou home]# usermod -d /home/liyouxx liyou4
#改变用户的uid
[root@bluecusliyou home]# usermod -u 777 liyou4
# 修改用户名liyou4为liyou
[root@bluecusliyou home]# usermod -l liyou liyou4
# 锁定密码
[root@bluecusliyou home]# usermod -L liyou
# 解锁密码
[root@bluecusliyou home]# usermod -U liyou

2、用户组管理

(1)groupadd(创建新的用户组)

groupadd命令来自于英文词组“group add”,其功能是用于创建新的用户组。每个用户在创建时都有一个与其同名的基本组,后期可以使用groupadd命令创建出新的用户组信息,让多个用户加入到指定的扩展组中,为后续的工作提供了良好的文档共享环境。

**语法格式:**groupadd [参数] 用户组

常用参数:

-g指定新建工作组的id
-r创建系统工作组
-K覆盖配置文件“/ect/login.defs”
-o允许添加组ID号不唯一的工作组

参考实例

# 创建用户组
[root@bluecusliyou ~]# groupadd usergrouptest1
# 创建用户组,指定工作组id
[root@bluecusliyou ~]# groupadd -g 8563 usergrouptest2
# 使用-r创建系统工作组
[root@bluecusliyou ~]# groupadd -r usergrouptest3

(2)groupdel(删除用户组)

groupdel命令用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。

userdel修改系统账户文件,删除与 GROUP 相关的所有项目。给出的组名必须存在。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

语法格式:groupdel [参数] [群组名称]

常用参数

-h显示帮助信息
-R在chroot_dir目录中应用更改并使用chroot_dir目录中的配置文件

参考实例

[root@bluecusliyou ~]# groupdel usergrouptest1

(3)gpasswd(设置管理用户组)

gpasswd命令是Linux下工作组文件/etc/group和/etc/gshadow的管理工具 ,系统管理员可以使用-a选项定义组管理员,使用-m选项定义成员,由组管理员用组名调用的gpasswd只提示输入组的新密码。

**语法格式:**gpasswd [参数]

常用参数:

-a添加用户到组
-d从组删除用户
-A指定管理员
-M指定组成员和-A的用途差不多
-r删除密码
-R限制用户登入组,只有组中的成员才可以用newgrp加入该组

参考实例

# 添加用户到组
[root@bluecusliyou home]# gpasswd -a liyou usergrouptest2
Adding user liyou to group usergrouptest2
# 移除用户出组
[root@bluecusliyou home]# gpasswd -d liyou usergrouptest2
Removing user liyou from group usergrouptest2

(4)groupmod(更改群组识别码或名称)

groupmod命令用于更改群组的识别码或名称时。不过大家还是要注意,用户名不要随意修改,组名和 GID 也不要随意修改,因为非常容易导致管理员逻辑混乱。如果非要修改用户名或组名,则建议大家先删除旧的,再建立新的。

**语法格式:**groupmod [参数]

常用参数:

-g设置欲使用的群组识别码
-o重复使用群组识别码
-n设置欲使用的群组名称

参考实例

# 更改组ID
[root@bluecusliyou home]# groupmod -g 222 usergrouptest2
# 更改组名
[root@bluecusliyou home]# groupmod -n usergrouptestxx usergrouptest2

3、查看用户信息

# 查看用户信息
[root@bluecusliyou ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
...
# 查看用户密码  密码是加密的,没有密码就是!!
[root@bluecusliyou ~]#cat /etc/shadow
...
liyou1:!!:18954:0:99999:7:::
liyou2:!!:18954:0:99999:7:::
liyou3:!!:18954:0:99999:7:::
liyou4:123456:18954:0:99999:7:::
# 查看所有用户组
[root@bluecusliyou home]# cat /etc/group
...
liyou1:x:1000:
liyou2:x:1001:
liyou4:x:1003: 

4、文件权限

  • Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。

  • 为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

(1)文件基本属性查看

在 Linux 中我们可以使用 ==ll== 或者 ==ls –l== 命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@bluecusliyou /]# ls -l
total 24
dr-xr-xr-x.   5 root root 4096 Nov 20  2020 boot
drwxr-xr-x   19 root root 2960 Jul 14 14:27 dev
drwxr-xr-x.  94 root root 8192 Jul 14 14:24 etc
drwxr-xr-x.   2 root root    6 May 11  2019 home
lrwxrwxrwx.   1 root root    7 May 11  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 May 11  2019 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 May 11  2019 media
drwxr-xr-x.   2 root root    6 May 11  2019 mnt
drwxr-xr-x.   2 root root    6 May 11  2019 opt
dr-xr-xr-x  102 root root    0 Jul 14 14:24 proc
dr-xr-x---.   5 root root  174 Jul 13 15:59 root
drwxr-xr-x   30 root root  880 Jul 14 14:24 run
lrwxrwxrwx.   1 root root    8 May 11  2019 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 May 11  2019 srv
dr-xr-xr-x   13 root root    0 Jul 14  2021 sys
drwxrwxrwt.   9 root root 4096 Jul 14 15:04 tmp
drwxr-xr-x.  12 root root  144 Nov 20  2020 usr
drwxr-xr-x.  21 root root 4096 Nov 20  2020 var
lrwxrwxrwx.   1 root root    7 May 11  2019 bin -> usr/bin

(2)文件基本属性说明

file-llls22

每个文件的属性由左边第一部分的 10 个字符来确定。

363003_1227493859FdXT

在 Linux 中第一个字符代表这个文件类型。

  • ==当为 d 则是目录;==
  • ==当为 - 则是文件;==
  • ==若是 l 则表示为链接文档(link file);==
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

  • 1-3位确定属主(该文件的所有者)拥有该文件的权限。
  • 4-6位确定属组(所有者的同组用户)拥有该文件的权限。
  • 7-9位确定其他用户拥有该文件的权限。
  • ==对于 root 用户来说,一般情况下,文件的权限对其不起作用。==

文件和目录权限格式相容,功能不同

  • 文件:r代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。
  • 目录:rx(进入目录读取文件名),xw(修改目录内文件名),x(进入目录)。

(3)chmod(改变文件或目录权限)

  • chmod命令来自于英文词组”change mode“的缩写,其功能是用于改变文件或目录权限的命令。默认只有文件的所有者和管理员可以设置文件权限,普通用户只能管理自己文件的权限属性。
  • Linux文件属性有两种设置方法,一种是数字,一种是符号。
  • Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。

数字类型改变文件权限

文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的数值对照表如下:

  • r:4
  • w:2
  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx--- 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= --- = 0+0+0 = 0

符号类型改变文件权限

权限的所有者

uuser:用户
ggroup:组
oothers:其他
aall表示三者都是

修改权限所用的符号

+增加权限
-减少权限
=设定权限

语法格式: chmod 参数 文件

常用参数:

-c若该文件权限确实已经更改,才显示其更改动作
-f若该文件权限无法被更改也不显示错误讯息
-v显示权限变更的详细资料
-R对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

参考实例

[root@bluecusliyou home]# ll
total 4
drwx------ 2 1003 liyou4           62 Nov 23 14:48 liyou4
-rw-r--r-- 1 root usergrouptest3    0 Nov 23 22:37 testfile1
-rw-r--r-- 1 root usergrouptest3 1333 Nov 23 19:40 test.log
# 数字类型改变文件权限
[root@bluecusliyou home]# chmod 777 liyou4
[root@bluecusliyou home]# ll
total 4
drwxrwxrwx 2 1003 liyou4           62 Nov 23 14:48 liyou4
-rw-r--r-- 1 root usergrouptest3    0 Nov 23 22:37 testfile1
-rw-r--r-- 1 root usergrouptest3 1333 Nov 23 19:40 test.log
# 数字类型改变文件权限
[root@bluecusliyou home]# chmod 761 testfile1
[root@bluecusliyou home]# ll
total 4
drwxrwxrwx 2 1003 liyou4           62 Nov 23 14:48 liyou4
-rwxrw---x 1 root usergrouptest3    0 Nov 23 22:37 testfile1
-rw-r--r-- 1 root usergrouptest3 1333 Nov 23 19:40 test.log
# 符号类型改变文件权限
[root@bluecusliyou home]# chmod u=r,g+w,o-r test.log
[root@bluecusliyou home]# ll
total 4
drwxrwxrwx 2 1003 liyou4           62 Nov 23 14:48 liyou4
-rwxrw---x 1 root usergrouptest3    0 Nov 23 22:37 testfile1
-r--rw---- 1 root usergrouptest3 1333 Nov 23 19:40 test.log

(4)chown(改变文件或目录用户和用户组)

chown命令来自于英文词组”Change owner“的缩写,其功能是用于改变文件或目录的用户和用户组信息。管理员可以改变一切文件的所属信息,而普通用户只能改变自己文件的所属信息。

**语法格式:**chown [参数] 所属主:所属组 文件

常用参数:

-R对目前目录下的所有文件与目录进行相同的变更
-c显示所属信息变更信息
-f若该文件拥有者无法被更改也不要显示错误
-h只对于链接文件进行变更,而非真正指向的文件
-v显示拥有者变更的详细资料
--help显示辅助说明
--version显示版本

参考实例

[root@bluecusliyou home]# ll
total 4
drwxrwxrwx 2 1003 liyou4           62 Nov 23 14:48 liyou4
-rwxrw---x 1 root usergrouptest3    0 Nov 23 22:37 testfile1
-r--rw---- 1 root usergrouptest3 1333 Nov 23 19:40 test.log
# 修改所有者
[root@bluecusliyou home]# chown liyou test.log
[root@bluecusliyou home]# ll
total 4
drwxrwxrwx 2  1003 liyou4           62 Nov 23 14:48 liyou4
-rwxrw---x 1 root  usergrouptest3    0 Nov 23 22:37 testfile1
-r--rw---- 1 liyou usergrouptest3 1333 Nov 23 19:40 test.log
# 修改所有者和用户组
[root@bluecusliyou home]# chown root:liyou4 test.log
[root@bluecusliyou home]# ll
total 4
drwxrwxrwx 2 1003 liyou4           62 Nov 23 14:48 liyou4
-rwxrw---x 1 root usergrouptest3    0 Nov 23 22:37 testfile1
-r--rw---- 1 root liyou4         1333 Nov 23 19:40 test.log

(5)chgrp(更改文件用户组)

chgrp是英语单词“change group”的缩写,命令的作用和其中文释义一样,为用于变更文件或目录的所属群组。

语法格式: chgrp [参数] [目录]

常用参数:

-c效果类似”-v”参数,但仅回报更改的部分
-f不显示错误信息
-h对符号连接的文件作修改,而不更动其他任何相关文件
-R递归处理,将指定目录下的所有文件及子目录一并处理
-v显示指令执行过程
--reference把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同

参考实例

[root@bluecusliyou home]# ll
total 4
drwxrwxrwx 2 1003 liyou4           62 Nov 23 14:48 liyou4
-rwxrw---x 1 root usergrouptest3    0 Nov 23 22:37 testfile1
-r--rw---- 1 root liyou4         1333 Nov 23 19:40 test.log
# 修改用户组
[root@bluecusliyou home]# chgrp liyou4 testfile1
[root@bluecusliyou home]# ll
total 4
drwxrwxrwx 2 1003 liyou4   62 Nov 23 14:48 liyou4
-rwxrw---x 1 root liyou4    0 Nov 23 22:37 testfile1
-r--rw---- 1 root liyou4 1333 Nov 23 19:40 test.log

七、系统管理

1、磁盘管理

(1)df(显示磁盘空间使用情况)

df命令来自于英文词组”Disk Free“的缩写,其功能是用于显示系统上磁盘空间的使用量情况。df命令显示的磁盘使用量情况含可用、已有及使用率等信息,默认单位为Kb,建议使用-h参数进行单位换算,毕竟135M比138240Kb更利于阅读对吧~

语法格式: df [参数] [对象磁盘/分区]

常用参数:

-a显示所有系统文件
-B <块大小>指定显示时的块大小
-h以容易阅读的方式显示
-H以1000字节为换算单位来显示
-i显示索引字节信息
-k指定块大小为1KB
-l只显示本地文件系统
-t <文件系统类型>只显示指定类型的文件系统
-T输出时显示文件系统类型
-- -sync在取得磁盘使用信息前,先执行sync命令

参考实例

# 显示磁盘分区使用情况
[root@bluecusliyou home]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs         1823120       0   1823120   0% /dev
tmpfs            1838600       0   1838600   0% /dev/shm
tmpfs            1838600     672   1837928   1% /run
tmpfs            1838600       0   1838600   0% /sys/fs/cgroup
/dev/vda1       41931756 9725920  32205836  24% /
overlay         41931756 9725920  32205836  24% /var/lib/docker/overlay2/9f51bd9261e59dfee0d46bf819ab138f1e7d987d6273827c8dc930f493b69ae2/merged
overlay         41931756 9725920  32205836  24% /var/lib/docker/overlay2/a82ac32c675e55780142d55438e2df39895876f236a238c9488fa5ea58ccfc2a/merged
overlay         41931756 9725920  32205836  24% /var/lib/docker/overlay2/cc7094dd7f485ea8215be462c88ae3af286e2974576b1cc660886a44610081bd/merged
tmpfs             367720       0    367720   0% /run/user/0
# 以容易阅读的方式显示磁盘分区使用情况
[root@bluecusliyou home]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs           1.8G  672K  1.8G   1% /run
tmpfs           1.8G     0  1.8G   0% /sys/fs/cgroup
/dev/vda1        40G  9.3G   31G  24% /
overlay          40G  9.3G   31G  24% /var/lib/docker/overlay2/9f51bd9261e59dfee0d46bf819ab138f1e7d987d6273827c8dc930f493b69ae2/merged
overlay          40G  9.3G   31G  24% /var/lib/docker/overlay2/a82ac32c675e55780142d55438e2df39895876f236a238c9488fa5ea58ccfc2a/merged
overlay          40G  9.3G   31G  24% /var/lib/docker/overlay2/cc7094dd7f485ea8215be462c88ae3af286e2974576b1cc660886a44610081bd/merged
tmpfs           360M     0  360M   0% /run/user/0
# 显示指定文件所在分区的磁盘使用情况
[root@bluecusliyou home]# df /etc/dhcp
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       41931756 9725920  32205836  24% /
# 显示文件类型为ext4的磁盘使用情况
[root@bluecusliyou home]# df -t ext4
df: no file systems processed

(2)du(查看文件或目录的大小)

du命令来自于英文词组“Disk Usage”的缩写,其功能是用于查看文件或目录的大小。人们经常会把df和du命令混淆,df是用于查看磁盘或分区使用情况的命令,而du命令则是用于按照指定容量单位来查看文件或目录在磁盘中的占用情况。

**语法格式:**du [参数] 文件

常用参数:

-a显示目录中所有文件大小
-k以KB为单位显示文件大小
-m以MB为单位显示文件大小
-g以GB为单位显示文件大小
-h以易读方式显示文件大小
-s仅显示总计

参考实例

# 显示文件夹大小
[root@bluecusliyou home]# du /home
12	/home/liyou4
12	/home
# 以易读方式显示文件夹内及子文件夹大小
[root@bluecusliyou home]# du -h /home
12K	/home/liyou4
12K	/home
# 以易读方式显示文件夹内所有文件大小
[root@bluecusliyou home]# du -ah /home
4.0K	/home/liyou4/.bash_logout
4.0K	/home/liyou4/.bash_profile
4.0K	/home/liyou4/.bashrc
12K	/home/liyou4
12K	/home
# 显示文件大小
[root@bluecusliyou home]# du test.log
4	test.log

(3)fdisk(管理磁盘分区)

fdisk命令来自于英文词组“Partition table manipulator for Linux”的缩写,其功能是用于管理磁盘的分区信息。如果一套几百平米的房子内部没有墙壁,虽然看起来会很敞亮,但是各种声音、气味、物品会随意充斥在整个房子内,让人极不舒适,因此需要用墙壁按照功能进行划分,例如卧室、厕所、厨房、阳台等等。

fdisk命令可以用于对磁盘进行分区操作,用户可以根据实际情况进行合理划分,这样后期挂载和使用时会方便很多。

**语法格式:**fdisk [参数] [设备]

常用参数:

-b指定每个分区的大小
-l列出指定的外围设备的分区表状况
-s将指定的分区大小输出到标准输出上,单位为区块
-u搭配”-l”参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址
-v显示版本信息

参考实例

# 查看所有分区情况
[root@bluecusliyou home]# fdisk -l
Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x319ba3a3

Device     Boot Start      End  Sectors Size Id Type
/dev/vda1  *     2048 83886046 83883999  40G 83 Linux

(4)mkfs(对设备进行格式化文件系统操作)

mkfs命令来自于英文词组“make file system”的缩写,其功能是用于对设备进行格式化文件系统操作。在挂载使用硬盘空间前的最后一步,运维人员需要对整块硬盘或指定分区进行格式化文件系统操作,Linux系统支持的文件系统包含ext2、ext3、ext4、xfs、fat、msdos、vfat、minix等多种格式。

语法格式: mkfs [参数] 设备名

常用参数:

-V详细显示模式
-t给定档案系统的型式
-c检查该设备是否有损坏

(5)mount(把文件系统挂载到目录)

mount命令的功能是用于把文件系统挂载到目录,文件系统指的是被格式化过的硬盘或分区设备,进行挂载操作后,用户便可以在挂载目录中使用硬盘资源了。

默认情况下Linux系统并不会像Windows系统那样自动的挂载光盘和U盘设备,需要自行完成。

**语法格式:**mount [参数] [设备] [挂载点]

常用参数:

-t指定挂载类型
-l显示已加载的文件系统列表
-h显示帮助信息并退出
-V显示程序版本
-n加载没有写入文件“/etc/mtab”中的文件系统
-r将文件系统加载为只读模式
-a加载文件“/etc/fstab”中描述的所有文件系统

参考实例

umount -f [挂载位置] 强制卸载

2、进程管理

(1)基本概念

  • 在Linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号!
  • 每一个进程呢,都会有一个父进程!
  • 进程可以有两种存在方式:前台!后台运行!
  • 服务都是后台运行的,基本的程序都是前台运行的!

(2)ps(显示进程状态)

  • ps命令是“process status”的缩写,ps命令用于显示当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。
  • ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。

**语法格式:**ps [参数]

常用参数:

a显示现行终端机下的所有程序,包括其他用户的程序
-A显示所有程序
c显示每个程序真正的指令名称,而不包含路径
-C <指令名称>指定执行指令的名称,并列出该指令的程序的状况
-d显示所有程序,但不包括阶段作业管理员的程序
e列出程序时,显示每个程序所使用的环境变量
-f显示UID,PPIP,C与STIME栏位
f用ASCII字符显示树状结构,表达程序间的相互关系
g显示现行终端机下的所有程序,包括所属组的程序
-G <群组识别码>列出属于该群组的程序的状况
h不显示标题列
-H显示树状结构,表示程序间的相互关系
-j采用工作控制的格式显示程序状况
-l采用详细的格式来显示程序状况
L列出栏位的相关信息
-m显示所有的执行绪
n以数字来表示USER和WCHAN栏位
-N显示所有的程序,除了执行ps指令终端机下的程序之外
-p <程序识别码>指定程序识别码,并列出该程序的状况
r只列出现行终端机正在执行中的程序
-s <阶段作业>列出隶属该阶段作业的程序的状况
s采用程序信号的格式显示程序状况
S列出程序时,包括已中断的子程序资料
-t <终端机编号>列出属于该终端机的程序的状况
-T显示现行终端机下的所有程序
u以用户为主的格式来显示程序状况
-U <用户识别码>列出属于该用户的程序的状况
U <用户名称>列出属于该用户的程序的状况
v采用虚拟内存的格式显示程序状况
-V或V显示版本信息
-w或w采用宽阔的格式来显示程序状况
x显示所有程序,不以终端机来区分
X采用旧式的Linux i386登陆格式显示程序状况
-y配合选项”-l”使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位
--cols <每列字符数>设置每列的最大字符数
--headers重复显示标题列
--help在线帮助
--info显示排错信息
--lines <显示列数>设置显示画面的列数

参考实例

#显示所有当前进程
ps -ef 
# 显示系统中全部的进程信息,含详细信息
ps aux 
# 结合管道操作符,将当前系统运行状态中指定进程信息过滤出来
ps -ef | grep ssh
# 结合输出重定向,将当前进程信息保留备份至指定文件
ps aux > backup.txt
#显示所有当前进程
ps -ax 
#根据用户过滤进程
ps -u pungki 
#根据 CPU 使用来升序排序
ps -aux --sort -pcpu | less 
#根据用户过滤进程
ps -aux --sort -pmem | less 
#查询全前10个使用cpu和内存最高的应用
ps -aux --sort -pcpu,+pmem | head -n 10 
#通过进程名和PID过滤
ps -C getty 
#带格式显示的,通过进程名和PID过滤
ps -f -C getty 
#根据线程来过滤进程
ps -L 1213 
#树形显示进程
ps -axjf(或pstree)
# 显示安全信息
ps -eo pid,user,args 
#格式化输出 root 用户(真实的或有效的UID)创建的进程
ps -U root -u root u 

(3)top(实时显示系统运行状态)

top命令的功能是用于实时显示系统运行状态,包含处理器、内存、服务、进程等重要资源信息。运维工程师们常常会把top命令比作是“加强版的Windows任务管理器”,因为除了能看到常规的服务进程信息以外,还能够对处理器和内存的负载情况一目了然,实时感知系统全局的运行状态,非常适合作为接手服务器后执行的第一条命令。

**语法格式:**top [参数]

常用参数:

-d <秒>改变显示的更新速度
-c切换显示模式
-s安全模式,不允许交互式指令
-i不显示任何闲置或僵死的行程
-n设定显示的总次数,完成后将会自动退出
-b批处理模式,不进行交互式显示

参考实例

#显示进程信息
top
#显示完整的进程信息
top -c
#以批处理模式显示程序信息
top -b
#以累积模式显示程序信息
top -s
#设置信息更新次数
top -n 2

(4)kill(杀死进程)

  • kill命令的功能是用于杀死(结束)进程,与英文单词的含义相同。Linux系统中如需结束某个进程,既可以使用如service或systemctl的管理命令来结束服务,也可以使用kill命令直接结束进程信息。
  • kill命令可将指定的信号发送给相应的进程或工作。 kill命令默认使用信号为15,用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号9,强制杀死进程或作业。

**语法格式:**kill [参数] 进程号

常用参数:

-l列出系统支持的信号
-s指定向进程发送的信号
-a不限制命令名和进程号的对应关系
-p不发送任何信号

参考实例

# 列出系统支持的全部信号列表
[root@bluecusliyou testdir]# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    
# 结束某个指定的进程(数字为对应的PID值)
[root@bluecusliyou testdir]# kill 1518
# 强制结束某个指定的进程(数字为对应的PID值)
[root@bluecusliyou testdir]# kill -9 1518

3、服务管理

在linux中,service和systemctl都是用来进行服务管理,在centos7.x版本以后,推荐使用systemctl来处理,比如同样是查看防火墙状态,二者的指令如下:【service firewalld status】【systemctl status firewalld】。

(1)systemctl(管理系统服务)

systemctl命令来自于英文词组”system control“的缩写,其功能是用于管理系统服务。从RHEL/CentOS7版本之后初始化进程服务init被替代成了systemd服务,systemd初始化进程服务的管理是通过systemctl命令完成的,从功能上涵盖了之前service、chkconfig、init、setup等多条命令的大部分功能。

语法格式:systemctl 参数 服务

常用参数:

start启动服务
stop停止服务
restart重启服务
enable使某服务开机自启
disable关闭某服务开机自启
status查看服务状态
list -units --type=service列举所有已启动服务

参考实例

# 启动httpd服务
systemctl start httpd.service
# 停止httpd服务
systemctl stop httpd.service
# 重启httpd服务
systemctl restart httpd.service
# 查看httpd服务状态
systemctl status httpd.service
# 使httpd开机自启
systemctl enable httpd.service
# 取消httpd开机自启
systemctl disable httpd.service
# 列举所有已启动服务(unit单元)
systemctl list-units --type=service

(2)service(控制系统服务)

service命令是Redhat Linux兼容的发行版中用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

语法格式:service [参数]

常用参数

--status-all显示所服务的状态
-h显示帮助信息

参考实例

# 启动httpd服务
service httpd.service start 
# 停止httpd服务
service httpd.service stop
# 重启httpd服务
service httpd.service restart
# 查看httpd服务状态
service httpd.service status
# 显示所有服务的状态
service --status-all

4、软件安装与更新

(1)rpm(RPM软件包管理器)

  • rpm命令是Red-Hat Package Manager(RPM软件包管理器)的缩写, 该命令用于管理Linux 下软件包的软件。在 Linux 操作系统下,几乎所有的软件均可以通过RPM 进行安装、卸载及管理等操作。

  • 概括的说,rpm命令包含了五种基本功能:安装、卸载、升级、查询和验证。

**语法格式:**rpm [参数] 软件包

常用参数:

-a查询所有的软件包
-b或-t设置包装套件的完成阶段,并指定套件档的文件名称;
-c只列出组态配置文件,本参数需配合”-l”参数使用
-d只列出文本文件,本参数需配合”-l”参数使用
-e卸载软件包
-f查询文件或命令属于哪个软件包
-h安装软件包时列出标记
-i安装软件包
-l显示软件包的文件列表
-p查询指定的rpm软件包
-q查询软件包
-R显示软件包的依赖关系
-s显示文件状态,本参数需配合”-l”参数使用
-U升级软件包
-v显示命令执行过程
-vv详细显示指令执行过程

参考实例

# 直接安装软件包
rpm -ivh packge.rpm
# 忽略报错,强制安装
rpm --force -ivh package.rpm
# 列出所有安装过的包
rpm -qa
# 查询rpm包中的文件安装的位置
rpm -ql ls
# 卸载rpm包
rpm -e package.rpm
# 升级软件包
rpm -U file.rpm

(2)yum(基于RPM的软件包管理器)

  • yum命令来自于英文词组”YellowdogUpdater,Modified“的缩写,其功能是用于在Linux系统中基于RPM技术进行软件包的管理工作。yum技术通用于RHEL、CentOS、Fedora、OpenSUSE等主流系统,可以让系统管理人员交互式的自动化更新和管理软件包,实现从指定服务器自动下载、更新、删除软件包的工作。

    yum软件仓库及命令能够自动处理软件依赖关系,一次性安装所需全部软件,无需繁琐的操作。

**语法格式:**yum [参数] 软件包

常用参数:

-h显示帮助信息
-y对所有的提问都回答“yes”
-c指定配置文件
-q安静模式
-v详细模式
-t检查外部错误
-d设置调试等级(0-10)
-e设置错误等级(0-10)
-R设置yum处理一个命令的最大等待时间
-C完全从缓存中运行,而不去下载或者更新任何头文件
install安装rpm软件包
update更新rpm软件包
check-update检查是否有可用的更新rpm软件包
remove删除指定的rpm软件包
list显示软件包的信息
search检查软件包的信息
info显示指定的rpm软件包的描述信息和概要信息
clean清理yum过期的缓存
shell进入yum的shell提示符
resolvedep显示rpm软件包的依赖关系
localinstall安装本地的rpm软件包
localupdate显示本地rpm软件包进行更新
deplist显示rpm软件包的所有依赖关系

参考实例

# 清理原有的软件仓库信息缓存
yum clean all
# 建立最新的软件仓库信息缓存
yum makecache
# 安装指定的服务及相关软件包
yum install httpd
# 更新指定的服务及相关软件包
yum update httpd
# 卸载指定的服务及相关软件包
yum remove httpd
# 显示可安装的软件包组列表
yum grouplist
# 显示指定服务的软件信息
yum info httpd

(3)源码编译安装

 软件以源码工程的形式发布,需要获取到源码工程后用相应开发工具进行编译打包部署。

(4)二进制发布包

 软件已经针对具体平台编译打包发布,只要解压,修改配置即可。

5、网络配置

(1)hostname(显示和设置系统的主机名)

hostname命令的功能是用于显示和设置系统的主机名,Linux系统中的HOSTNAME环境变量对应保存了当前的主机名称,使用hostname命令能够查看和设置此环境变量的值,而要想永久修改主机名称则需要使用hostnamectl命令或直接编辑配置文件/etc/hostname才行。

**语法格式:**hostname [参数]

常用参数:

-a显示主机别名
-d显示DNS域名
-f显示FQDN名称
-i显示主机的ip地址
-s显示短主机名称
-y显示NIS域名

参考实例

# 显示主机名
hostname
# 使用-a参数显示主机别名
hostname -a
# 修改主机名(重启后无效)
hostname xxx
# 永久修改(重启生效)
hostnamectl set-hostname xxx

(2)ifconfig(显示或设置网络设备参数信息)

ifconfig命令来自于英文词组”network interfaces configuring“的缩写,其功能是用于显示或设置网络设备参数信息。在Windows系统中与之类似的命令叫做ipconfig,同样的功能可以使用ifconfig去完成。

通常不建议使用ifconfig命令配置网络设备的参数信息,因为一旦服务器重启,配置过的参数会自动失效,还是编写到配置文件中更稳妥。

永久修改ip:修改 /etc/sysconfig/network-scripts/ifcfg-eth0 文件 (注:不一定是ifcfg-eth0,要通过ifconfig命令查看 )

**语法格式:**ifconfig [参数] [网卡设备]

常用参数:

add<地址>设置网络设备IPv6的IP地址
del<地址>删除网络设备IPv6的IP地址
down关闭指定的网络设备
up启动指定的网络设备
IP地址指定网络设备的IP地址

参考实例

# 查看IP地址
ifconfig
# 临时修改ip地址(重启失效) eth0看具体是哪个网卡
ifconfig eth0 192.168.12.22
# 启动关闭指定网卡
ifconfig eth0 down
ifconfig eth0 up
# 为网卡配置和删除IPv6地址
ifconfig eth0 add 33ffe:3240:800:1005::2/64
ifconfig eth0 del 33ffe:3240:800:1005::2/64
# 修改MAC地址
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
# ARP协议关闭和开启
ifconfig eth0 -arp
ifconfig eth0 arp
# 配置IP地址
ifconfig eth0 192.168.1.56 
ifconfig eth0 192.168.1.56 netmask 255.255.255.0
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255

(3)netstat(显示网络状态)

netstat命令来自于英文词组”network statistics“的缩写,其功能是用于显示各种网络相关信息,例如网络连接状态、路由表信息、接口状态、NAT、多播成员等等。

netstat命令不仅应用于Linux系统,而且在Windows XP、Windows 7、Windows 10及Windows 11中均已默认支持,并且可用参数也相同,有经验的运维人员可以直接上手。

**语法格式:**netstat [参数]

常用参数:

-a显示所有连线中的Socket
-p显示正在使用Socket的程序识别码和程序名称
-l仅列出在监听的服务状态
-t显示TCP传输协议的连线状况
-u显示UDP传输协议的连线状况
-i显示网络界面信息表单
-r显示路由表信息
-n直接使用IP地址,不通过域名服务器

参考实例

列出所有端口 (包括监听和未监听的)

## 列出所有端口 
netstat -a
## 列出所有 tcp 端口 
netstat -at
##列出所有 udp 端口 
netstat -au 

列出所有处于监听状态的 Sockets

### 只显示监听端口 
netstat -l
### 只列出所有监听 tcp 端口
netstat -lt
### 只列出所有监听 udp 端口 
netstat -lu
### 只列出所有监听 UNIX 端口 
netstat -lx

找出程序运行的端口

netstat -ap | grep ssh

找出端口占用情况

[root@worker3 ~]# netstat -tunlp |grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1759906/docker-prox 
tcp6       0      0 :::80                   :::*                    LISTEN      1759910/docker-prox 

(4)域名映射

 /etc/hosts文件用于在通过主机名进行访问时做ip地址解析之用,相当于windows系统的C:\Windows\System32\drivers\etc\hosts文件的功能。

(5)ip addr(查看IP地址)

[root@bluecusliyou ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:16:3e:16:fa:95 brd ff:ff:ff:ff:ff:ff
    inet 172.27.45.106/20 brd 172.27.47.255 scope global dynamic noprefixroute eth0
       valid_lft 312184993sec preferred_lft 312184993sec
    inet6 fe80::216:3eff:fe16:fa95/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:3f:30:cc:94 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:3fff:fe30:cc94/64 scope link 
       valid_lft forever preferred_lft forever
89: vethf0fc6b7@if88: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 02:31:61:b2:ab:a9 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::31:61ff:feb2:aba9/64 scope link 
       valid_lft forever preferred_lft forever
91: veth3f74a7c@if90: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether b6:07:90:98:e7:2b brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::b407:90ff:fe98:e72b/64 scope link 
       valid_lft forever preferred_lft forever

(6)ping(测试主机间网络连通性)

ping命令的功能是用于测试主机间网络连通性,发送出基于ICMP传输协议的数据包,要求对方主机予以回复,若对方主机的网络功能没有问题且防火墙放行流量,则就会回复该信息,我们也就可得知对方主机系统在线并运行正常了。

不过值得我们注意的是Linux与Windows相比有一定差异,Windows系统下的ping命令会发送出去4个请求后自动结束该命令;而Linux系统则不会自动终止,需要用户手动按下组合键“Ctrl+c”才能结束,或是发起命令时加入-c参数限定发送个数。

**语法格式:**ping [参数] 目标主机

常用参数:

-d使用Socket的SO_DEBUG功能
-c指定发送报文的次数
-i指定收发信息的间隔时间
-I使用指定的网络接口送出数据包
-l设置在送出要求信息之前,先行发出的数据包
-n只输出数值
-p设置填满数据包的范本样式
-q不显示指令执行过程
-R记录路由过程
-s设置数据包的大小
-t设置存活数值TTL的大小
-v详细显示指令的执行过程

参考实例

#检测网站的连通性
[root@bluecusliyou ~]# ping www.baidu.com
PING www.a.shifen.com (110.242.68.3) 56(84) bytes of data.
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=1 ttl=50 time=10.7 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=2 ttl=50 time=10.7 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=3 ttl=50 time=10.7 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=4 ttl=50 time=10.7 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 7ms
rtt min/avg/max/mdev = 10.695/10.717/10.743/0.076 ms
#ping4次
[root@bluecusliyou ~]# ping -c 4 www.baidu.com
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=50 time=11.6 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=50 time=11.7 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=50 time=11.7 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=4 ttl=50 time=11.7 ms

--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 7ms
rtt min/avg/max/mdev = 11.636/11.660/11.685/0.133 ms
#ping4次间隔3秒
[root@bluecusliyou ~]# ping -c 4 -i 3 www.baidu.com
PING www.a.shifen.com (110.242.68.3) 56(84) bytes of data.
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=1 ttl=50 time=10.7 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=2 ttl=50 time=10.7 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=3 ttl=50 time=10.7 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=4 ttl=50 time=10.8 ms

--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 17ms
rtt min/avg/max/mdev = 10.710/10.737/10.751/0.104 ms
#指定网站的IP
[root@bluecusliyou ~]# ping -c 1 www.baidu.com | grep from | cut -d " " -f 4
110.242.68.4

(7)wget(下载网络文件)

wget命令来自于英文词组”web get“的缩写,其功能是用于从指定网址下载网络文件。wget命令非常稳定,一般即便网络波动也不会导致下载失败,而是不断的尝试重连,直至整个文件下载完毕。

wget命令支持如HTTP、HTTPS、FTP等常见协议,可以在命令行中直接下载网络文件。

语法格式: wget [参数] 网址

常用参数:

-V显示版本信息
-h显示帮助信息
-b启动后转入后台执行
-c支持断点续传
-O定义本地文件名
-e <命令>执行指定的命令
--limit-rate=<速率>限制下载速度

参考实例

# 下载指定的网络文件
[root@bluecusliyou testdir]# wget https://www.linuxprobe.com/docs/LinuxProbe.pdf
# 下载指定的网络文件,并定义保存在本地的文件名称
[root@bluecusliyou testdir]# wget -O Book.pdf https://www.linuxprobe.com/docs/LinuxProbe.pdf
# 下载指定的网络文件,限速最高每秒300k
[root@bluecusliyou testdir]# wget --limit-rate=300k https://www.linuxprobe.com/docs/LinuxProbe.pdf
# 启用断点续传技术下载指定的网络文件
[root@bluecusliyou testdir]# wget -c https://www.linuxprobe.com/docs/LinuxProbe.pdf
# 下载指定的网络文件,将任务放至后台执行
[root@bluecusliyou testdir]# wget -b https://www.linuxprobe.com/docs/LinuxProbe.pdf

(8)ssh(安全的远程连接服务器)

ssh命令的功能是用于安全的远程连接服务器主机系统,作为openssh套件中的客户端连接工具,ssh命令可以让我们轻松的基于ssh加密协议进行远程主机访问,从而实现对远程服务器的管理工作。

语法格式: ssh [参数] 远程主机

常用参数:

-1强制使用ssh协议版本1
-2强制使用ssh协议版本2
-4强制使用IPv4地址
-6强制使用IPv6地址
-A开启认证代理连接转发功能
-a关闭认证代理连接转发功能
-b<IP地址>使用本机指定的地址作为对位连接的源IP地址
-C请求压缩所有数据
-F<配置文件>指定ssh指令的配置文件,默认的配置文件为“/etc/ssh/ssh_config”
-f后台执行ssh指令
-g允许远程主机连接本机的转发端口
-i<身份文件>指定身份文件(即私钥文件)
-l<登录名>指定连接远程服务器的登录用户名
-N不执行远程指令
-o<选项>指定配置选项
-p<端口>指定远程服务器上的端口
-q静默模式,所有的警告和诊断信息被禁止输出
-X开启X11转发功能
-x关闭X11转发功能
-y开启信任X11转发功能

参考实例

# 基于ssh协议,远程访问服务器主机系统
[root@bluecusliyou ~]# ssh 链接的服务器IP地址
root@121.4.29.23's password: 服务器密码
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Sun Jul 31 13:27:41 2022 from 服务器IP
[root@bluecusliyou ~]#
# 使用指定的用户身份登录远程服务器主机系统
[root@bluecusliyou ~]# ssh -l liyou 链接的服务器IP地址
root@121.4.29.23's password: 服务器密码
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Sun Jul 31 13:27:41 2022 from 服务器IP
[root@bluecusliyou ~]$
# 登录远程服务器主机系统后执行一条命令
[root@bluecusliyou ~]# ssh 链接的服务器IP地址 "docker ps -a"
root@121.4.29.23's password: 
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS                    PORTS                               NAMES
9319e4a0df36   nginx     "/docker-entrypoint.…"   5 months ago   Exited (1) 5 months ago                                       mynginxhttps
1c026f2f9a01   nginx     "/docker-entrypoint.…"   5 months ago   Up 5 months               80/tcp                              nginxforconf
e6bd5bdcba5d   nginx     "/docker-entrypoint.…"   5 months ago   Up 5 months               0.0.0.0:80->80/tcp, :::80->80/tcp   mynginx
[root@bluecusliyou ~]# 
# 强制使用v1版本的ssh加密协议连接远程服务器主机
[root@bluecusliyou ~]# ssh -1 链接的服务器IP地址

6、防火墙命令

firewall-cmd提供了一个动态管理的防火墙,支持网络/防火墙区域来定义网络连接或接口的信任级别。它支持IPv4、IPv6防火墙设置和以太网网桥,并将运行时和永久配置选项分开。它还支持服务或应用程序直接添加防火墙规则的接口。

(1)安装Firewall命令

yum install firewalld firewalld-config

(2)Firewall开启常见端口命令

firewall-cmd –zone=public –add-port=80/tcp –permanent
firewall-cmd –zone=public –add-port=443/tcp –permanent
firewall-cmd –zone=public –add-port=22/tcp –permanent
firewall-cmd –zone=public –add-port=21/tcp –permanent
firewall-cmd –zone=public –add-port=53/udp –permanent

(3)Firewall关闭常见端口命令

firewall-cmd –zone=public –remove-port=80/tcp –permanent
firewall-cmd –zone=public –remove-port=443/tcp –permanent
firewall-cmd –zone=public –remove-port=22/tcp –permanent
firewall-cmd –zone=public –remove-port=21/tcp –permanent
firewall-cmd –zone=public –remove-port=53/udp –permanent

(4)批量添加区间端口

firewall-cmd –zone=public –add-port=4400-4600/udp –permanent
firewall-cmd –zone=public –add-port=4400-4600/tcp –permanent

(5)重启防火墙命令

firewall-cmd –reload 或者 service firewalld restart

(6)查看端口列表

firewall-cmd –permanent –list-port