第5章 Linux 实操篇-远程登录到 Linux 服务器

  • 远程登录 Linux-Xshell6
  • 远程上传下载文件-Xftp6

第6章 Linux 实操篇-Vi 和 Vim 编辑器

  • Vi 和 Vim 常用的三种模式
  • 正常模式/一般模式:用 Vim 打开一个文件就直接进入正常模式(默认模式)。在这个模式中,可以上下左右移动光标、删除整行、复制、粘贴等等。
  • 插入模式/编辑模式:在正常模式下,键入 i,I,o,O,a,A,r,R 任何一个字母之后才会进入插入模式。
  • 命令行模式/末行模式:在插入模式下,键入 Esc 进入正常模式,再输入 : 进入命令行模式。在此模式下,可以查询、替换、保存、退出、显示行号等等。
  • Vi 和 Vim 的快捷键
  • 拷贝当前行:yy,拷贝当前行向下的5行:5yy,粘贴:p。
  • 删除当前行:dd,删除当前行向下的6行:5dd。
  • 在文件中查找某个单词:命令行模式下输入 /关键词,回车查找,再键入 n 查找下一个。
  • 设置文件的行号:set nu;取消文件的行号:set nonu。
  • 一般模式下,使用快捷键 G 到该文件的最末行,使用 gg 到文件的最首行。
  • 一般模式下,使用快捷键 u 撤销上次执行的操作。
  • 一般模式下,将光标移动到指定行,键入行号 G,如20G。、

第7章 Linux 实操篇-开机、重启和用户登录注销

  • 开机、重启命令

不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。

  • shutdown -h now:立即进行关机
  • shutdown -h 1:1分钟后自动关机(和 shutdown 命令效果一样)
  • shutdown -r now:现在重新启动计算机
  • halt:关机(上面的 -h 就是指 halt)
  • reboot:现在重新启动计算机
  • sync:把内存的数据同步到磁盘
  • 用户登录和注销
  • 登录时尽量少用 root 账号登录。为避免操作失误,可以先用普通用户登录,登录后用“su - 用户名”命令来切换成系统管理员身份。
  • 在提示符下输入 logout 即可注销用户。
  • logout 注销指令在图形运行级别无效,在运行级别3(非图形界面终端)下有效。

第8章 Linux 实操篇-用户管理

  • 基本介绍

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

  • 添加用户
  • 使用命令“useradd 用户名”创建用户成功后,会自动创建和用户同名的家目录。
  • 使用命令“useradd -d 指定目录 用户名”,给新创建的用户指定家目录。
  • 指定/修改密码
  • passwd 用户名
  • 删除用户
  • 删除用户,但保留家目录:userdel 用户名
  • 删除用户以及用户家目录:userdel -r 用户名
  • 查询用户信息指令
  • id 用户名
  • 当用户不存在时,返回无此用户。
  • 切换用户
  • su - 切换后的用户名
  • 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
  • 当需要返回到原来的用户时,使用 exit/logout 指令。
  • 查看当前登录用户

whoami/who am i

  • 用户组

系统可以对有共性/权限的多个用户进行统一的管理。

  • 新增组:groupadd 组名
  • 删除组:groupdel 组名
  • 增加用户时直接加上用户组:useradd -g 用户组 用户名
  • 修改已有用户的用户组:usermod -g 用户组 用户名
  • 用户和组相关文件
  • /etc/passwd 文件:用户的配置文件,记录用户的各种信息。
    每行的含义:用户名:口令:用户标识号:用户组标识号:注释性描述:主目录:登录 Shell
    Shell 就是 Linux 命令的解释器。Linux 命令经过 Shell 解释翻译后传到 Linux 内核执行。
    在 /etc/passwd 当中,除了标准 Shell 是 /bin/bash 之外,还可以写如 /sbin/nologin,/usr/bin/passwd 等。
  • 查看本机账号个数:cat /etc/passwd | wc -l
  • 查找 root 用户个数:cat /etc/passwd | grep :0
  • /etc/shadow 文件:口令的配置文件。
    每行的含义:登录名:加密口令:最后一次修改的时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  • /etc/group 文件:用户组的配置文件,负责记录 Linux 包含的组的信息。
    每一行的含义:组名:口令:组标识号:组内用户列表

第9章 Linux 实操篇-实用指令

  • 指定运行级别

常用运行级别是3和5,也可以指定默认运行级别。如命令 init 3。

运行级别 描述
0 关机
1 单用户【找回丢失密码】
2 多用户状态没有网络服务
3 多用户状态有网络服务
4 系统未使用保留给用户
5 图形界面
6 系统重启
  • CentOS 7系统运行级别

CentOS 6及之前的版本中,系统运行级别通过 /etc/inittab 文件进行设置和控制,但在 CentOS 7中,对这个文件的设置将不会对系统运行级别产生影响,这也是 CentOS 7中变化比较大的一部分特性。

  • 运行级别对应关系
init level systemctl target
0 shutdown.target
1 emergency.target
2 rescure.target
3 multi-user.target
4
5 graphical.target
6 reboot.target

常用运行级别相关命令

  • systemctl get-default:获取当前的运行级别;
  • systemctl set-default multi-user.target:将默认运行级别设置为 mulit-user;
  • systemctl isolate multi-user.target:不重启系统的情况下,将运行级别切换至 mulit-user;
  • init 3
  • 找回 root 密码

开机引导时,操作进入单用户模式修改 root 密码。

  • ls 指令
  • ls -alh :显示包括隐藏的全部文件、列表形式、人性化形式。
  • ls -alh 目录或文件
  • cd 指令
  • cd ~ :回到家目录
  • cd ..:回到上一级目录
  • mkdir 指令
  • mkdir 要创建的目录:创建一个目录
  • mkdir -p 要创建的多级目录:创建多级目录
  • rmdir 指令
  • rmdir 要删除的空目录:只能删除空目录
  • rm -rf 要删除的目录:递归、强制删除非空的目录
  • cp 指令
  • cp 源文件 复制后的文件
  • cp -r 源文件目录 复制后的文件目录:递归复制整个文件夹
  • mv 指令
  • mv 原文件名 修改后的文件名:重命名文件
  • mv 原文件或文件目录 移动后的文件目录:移动文件或整个文件夹
  • cat 指令
  • cat:只能浏览文件,而不能修改文件。
  • 为了浏览方便,一般会带上管道命令“| more”。如cat -n 文件名 | more ,实现分页浏览(-n 显示行号)。
  • less 指令

less 用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

  • 命令:less 要查看的文件。
  • echo 指令
  • echo 内容:echo 输出内容到控制台。
  • 使用 echo指令输出环境变量,例如输出当前的环境路径:echo $PATH。
  • head 指令
  • head 文件名:查看文件前10行内容。
  • head -n 5 文件名:查看文件前5行内容,5可以是任意行数。
  • tail 指令
  • tail 文件名:查看文件后10行内容。
  • tail -n 5 文件名:查看文件后5行内容,5可以是任意行数。
  • tail -f 文件名:实时追踪该文档的所有更新,工作经常使用。
  • ln 指令

软链接也叫符号链接,类似于 Windows 里的快捷方式,主要存放了链接其他文件的路径。

  • ln -s 原文件或目录 软链接名:给原文件创建一个软链接。
  • history 指令

查看已经执行过历史命令,也可以执行历史指令。

  • history:查看已经执行过历史命令。
  • !历史命令行数:执行历史命令行数所对应的命令。
  • date 指令
  • date:显示当前时间.
  • data+%Y:显示当前年份。
  • data+%m:显示当前月份。
  • data+%d:显示当前是哪一天。
  • date "+%Y-%m-%d %H:%M:%S":显示年月日时分秒。
  • date -s 字符串时间:设置系统时间。
  • cal 指令
  • cal:显示本月日历。
  • find 指令

find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。

  • find 搜索范围路径 -name 文件名:在搜索范围内按文件名搜索。
  • find 搜索范围路径 -user 用户名:在搜索范围内按用户名搜索。
  • find 搜索范围路径 -size +n:在搜索范围内按文件大小搜索,+n 表示大于 n,-n 表示小于 n,n 表示等于 n,n 的单位可以有 k、M、G。
  • locate 指令

locate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给定的文件。locate 指令无需遍历整个文件系统,查询速度较快。

  • 由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库。
  • locate 搜索文件名
  • grep 指令和 管道符号 |

grep 过滤查找,管道符号|,表示将前一个命令的处理结果输出传递给后面的命令处理。

  • grep 查找的内容 源文件。
  • cat 文件名 | grep -ni 查找的内容:-n 表示显示行号,-i 表示不区分大小写。
  • gzip/gunzip 指令
  • gzip 要压缩的文件:压缩文件,只能将文件压缩为*.gz 类型的文件。
  • gunzip *.gz:解压缩文件命令。
  • 当使用gzip对文件进行压缩后,不会保留原来的文件。
  • zip/unzip 指令
  • zip *.zip 要压缩的文件:压缩文件。
  • zip -r *.zip 要压缩的目录:压缩目录。
  • unzip *.zip:解压缩文件。
  • unzip -d 解压后文件的存放路径 *.zip:指定解压后文件的存放目录。
  • tar 指令

tar指令是打包指令,最后打包后的文件是 *.tar.gz 格式的文件。

  • tar -zcvf *.tar.gz 打包的文件或者目录:打包压缩文件或者目录。
  • tar -zxvf *.tar.gz:解压 *.tar.gz 文件到当前目录。
  • tar -zxvf *.tar.gz -C 解压后文件的存放路径:解压 *.tar.gz 文件到指定目录。

第10章 Linux 实操篇-组管理和权限管理

  • 用户组的创建
  • groupadd 组名
  • 当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。
  • 创建新用户的同时,指定用户所在的组:useradd -g 用户所在组 用户名。
  • 修改文件/目录所在组
  • chgrp 修改后的组名 文件名:改变文件所在组。
  • chgrp -R 修改后的组名 目录:改变目录所在组,-R 表示使其目录下所有子文件或目录递归生效。
  • 修改文件/目录所有者
  • chown 修改后的所有者名 文件名:改变文件所有者
  • chown -R 修改后的所有者名 目录:改变目录所有者,-R 表示使其目录下所有子文件或目录递归生效。
  • 修改用户所在组
  • usermod -g 修改后的组名 用户名:修改用户所在组。
  • usermod -d 修改后的目录 用户名:修改用户登录的初始目录。
  • 权限的基本介绍

例如 ls -alh 显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

  • 0位:表示文件类型。d:目录,-:普通文件,l:链接,c:字符设备文件(鼠标、键盘),b:块设备(硬盘)。
  • 1-3位:确定所有者(所有者,User)拥有的权限。-
  • 4-6位:确定所属组(同用户组,Group)拥有的权限。
  • 7-9位:确定其他用户(Other)拥有的权限。
  • 1 文件:硬连接数或目录:子目录数
  • root:所有者名
  • root:在的组名
  • 1213:文件大小(字节),如果是文件夹,显示4096字节
  • Feb 2 09:39:最后修改日期
  • abc:文件名或目录
  • rwx 详解

rwx 作用于文件

  • r(可读,read):可以读取,查看。
  • w(可写,write): 可以修改,但是不可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限。
  • x(可执行,execute):可以被执行。

rwx 作用于目录

  • r(可读,read):可以读取,使用ls查看目录内容。
  • w(可写,write): 可以在目录内创建、删除、重命名文件。
  • x(可执行,execute):可以进入该目录,使用 cd 进入。
  • 修改文件/目录的权限

第一种方式:+ 、-、= 变更权限

  • 规则:u(所有者)、g(所有组)、o(其它人)、a(所有人,u、g、o 的总和)
  • chmod u=rwx,g=rx,o=x 文件名或者目录:所有者读写执行的权限,所在组读执行权限,其它组执行权限。
  • chmod o+w 文件名或者目录:其它组增加写权限。
  • chmod a-x 文件名或者目录:所有人去除执行权限。

第二种方式:通过数字变更权限

  • 规则:r=4、w=2、x=1,rwx=4+2+1=7
  • chmod u=rwx,g=rx,o=x 文件名或者目录 相当于 chmod 751 文件名或者目录

写在前面

从这章开始,之后的内容大多是笔者没接触过的,特作详细说明,为之记。

第11章 Linux 实操篇-定时任务调度

  • 任务调度

任务调度:系统在某个时间执行的特定的命令或程序。
分类:

  • 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等;
  • 个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。
  • crond 任务调度

基本语法

  • crontab [选项]
  • 常用选项
选项 描述
-e 编辑 crontab 定时任务
-l 查询 crontab 任务
-r 删除当前用户所有 crontab 任务

快速入门

  • 任务要求
    每一分钟自动调用 ls -l /etc >> /tmp/to.txt
  • 操作步骤
    • 执行 crontab -e 命令
    • 接着输入自动调度命令到调度文件(/etc/crontab),即 */1 * * * * ls –l /etc/ >> /tmp/to.txt
    • 保存退出调度文件

5个占位符说明

占位符 含义 范围
第一个* 一小时中的第几分钟 0-59
第二个* 一天中的第几小时 0-23
第三个* 一月中的第几天 1-31
第四个* 一年中的第几月 1-12
第五个* 一周中的星期几 0-7(0和7都代表星期日)

特殊符号说明

特殊符号 含义
  • | 代表任何时间。比如第一个*就代表一小时中每分钟都执行一次的意思。
    , | 代表不连续的时间。比如“0 8,12,16 * * *”命令代表每天的8点0分,12点0分,16点0分都执行一次命令。
  • | 代表连续的时间范围。比如“0 5 * * 1-6”命令代表在周一到周六的凌晨5点0分执行命令。
    /n | 代表每隔多久执行一次。比如“/10 * * * *”命令代表每隔10分钟就执行一次命令。

特定时间执行任务案例

特定时间 含义
45 22 * * * 在每天22点45分执行命令。
0 17 * * 1 每周一的17点0分执行命令。
0 5 1,15 * * 每月1号和15号的凌晨5点0分执行命令。
40 4 * * 1-5 每周一到周五的凌晨4点40分执行命令。
*/10 4 * * * 每天的凌晨4点,每隔10分钟执行一次命令。
0 0 1,15 * 1 每月1号和15号,每周一的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为定义的都是天,容易让管理员混乱。
  • crond 任务调度实例
  • 每隔1分钟,将当前日期和日历都追加到 /home/mycal 文件中。
    • vim /home/my.sh 写入内容 date >> /home/mycal 和 cal >> /home/mycal
    • 给 my.sh 增加执行权限,chmod u+x /home/my.sh
    • 执行 crontab -e 命令,增加 */1 * * * * /home/my.sh
    • 保存退出调度文件
  • 每天凌晨2:00,将 mysql 数据库 testdb,备份到文件 mydb.bak 中。提示指令:mysqldump -u root -p密码 数据库 > /home/mydb.bak
    • 执行 crontab -e 命令
    • 增加 0 2 * * * mysqldump -u root -proot testdb > /home/mydb.bak
    • 保存退出调度文件
  • crond 相关指令
  • crontab -r: 终止任务调度。
  • crontab –l:列出当前所有任务调度。
  • service crond restart:重启任务调度。
  • 定时任务 at

基本介绍

  • at命令是一次性定时计划任务,at 的守护进程 atd 会以后台模式检查作业队列来运行。
  • 默认情况下,atd 守护进程每60秒检查作业队列。有作业时,会检查作业运行时间。如果时间与当前时间匹配,则运行此作业。
  • at命令是一次性定时计划任务,执行完一个任务后就不会再执行此任务了。
  • 在使用at命令的时候,一定要保证 atd 进程已启动,可以使用 ps -ef | grep atd 命令来查看 atd 是否在运行。

基本语法

  • at [选项] [时间]
  • 两次键入 Ctrl + D 结束 at 命令的输入。
  • 基本语法中,选项使用次数极少,此处不再赘述。

at 时间定义

  • 使用 hh:mm(小时:分钟)格式对当天的的时间指定。假如该时间已过去,那么就放在第二天执行。比如04:00
  • 使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
  • 使用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。比如12pm
  • 指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。比如04:00 2021-03-11
  • 对于安排不久就要执行的命令,可以使用相对计时法。。指定格式为:now + count time-units,now就是当前时间,time-units 是时间单位,这里能够是 minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几天,还是几小时等等。比如 now + 5 minutes
  • 直接使用 today(今天)、tomorrow(明天)来指定完成命令的时间。
  • at 定时任务实例
  • 2天后的下午5点执行 /bin/ls /home
    • 执行 at 5pm + 2 days 命令回车
    • 输入 /bin/ls /home
    • 两次键入 Ctrl + D 结束at命令的输入
  • atq 命令来查看系统中没有执行的定时任务
    • 直接执行 atq 命令查看即可
  • 明天17点钟,输出时间到指定文件 /root/date100.log
    • 执行 at 5pm tomorrow 命令回车
    • 输入 date > /root/date100.log
    • 两次键入 Ctrl + D 结束 at 命令的输入
  • 2分钟后,输出时间到指定文件 /root/date200.log
    • 执行 at now + 2 minutes 命令回车
    • 输入 date > /root/date200.log
    • 两次键入 Ctrl + D 结束 at 命令的输入
  • 删除已经设置的定时任务
    • 先使用 atq 命令查看系统中没有执行的定时任务,获取要删除的任务编号
    • 执行 atrm 任务编号 命令

第12章 Linux 实操篇-Linux 磁盘分区、挂载

  • Linux 分区

原理介绍

  • Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux 中每个分区都是用来组成整个文件系统的一部分。
  • Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录, 且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

硬盘说明

  • Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘。
  • 对于 IDE 硬盘,驱动器标识符为“sdx~”,“hd”表明分区所在设备的类型,这里是指IDE硬盘。“x”为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。比如 hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区,hdb2 表示为第二个 IDE 硬盘上的第二个主分区或扩展分区。
  • 对于 SCSI 硬盘,驱动器标识符为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型,其余则和 IDE 硬盘的表示方法一样。

查看所有设备挂载情况

  • lsblk:英文是“list block”,即用于列出所有可用块设备的信息
  • lsblk -f:查看系统分区和挂载点情况
  • 挂载的经典案例

说明

  • 给 Linux 系统增加一块新的硬盘,并且挂载到 /newdisk
  • 主要有以下5个步骤:虚拟机添加硬盘、分区、格式化、挂载、设置可以自动挂载。具体步骤如下。

具体步骤

  • 虚拟机添加硬盘
    在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,直到完成。然后重启系统(才能识别)!
  • 磁盘分区
    • 分区命令 fdisk /dev/sdb
    • 开始分区后输入 n,新增分区,然后选择 p,分区类型为主分区,分区号1-4可选,默认为1,1代表为只为磁盘划分一块分区,2代表为磁盘划分两块分区,依次类推。此次案例选择1。两次回车默认剩余全部空间。最后输入 w 写入分区并退出,若不保存退出输入 q。
命令 含义
m 显示命令列表
n 新增分区
d 删除分区
w 写入并退出
  • 格式化磁盘
    • 命令:mkfs -t ext4 /dev/sdb1 其中 ext4 是分区类型
  • 挂载
    • 挂载: 将一个分区与一个目录联系起来。
    • mount 设备名称 挂载目录 此次案例为 mount /dev/sdb1 /newdisk
    • 相反地,去除挂载命令为 umount 设备名称或者挂载目录
    • 此次案例用不到,但给出举例(umount /dev/sdb1 或者 umount /newdisk),特此说明。
  • 设置可以自动挂载
    以上四步,只能实现临时挂载,重启系统后,挂载就会失效。设置自动挂载,即永久挂载,当重启系统,仍然可以挂载到指定目录。
    • 通过修改 /etc/fstab 文件实现永久挂载
    • 此次案例在文件中增加 /dev/sdb1 /newdisk ext4 defaults 0 0
    • 保存并退出文件后,执行 mount –a 即刻生效
  • 磁盘情况查询
  • 查询系统整体磁盘使用情况:df -h
  • 查询指定目录的磁盘占用情况:du -h /指定目录
选项 含义
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度为1
-c 列出明细的同时,增加汇总值
  • 磁盘情况-工作实用指令
  • 统计 /opt 文件夹下文件的个数
    • ls -l /opt | grep "^-" | wc -l
  • 统计 /opt 文件夹下目录的个数
    • ls -l /opt | grep "^d" | wc -l
  • 统计 /opt 文件夹下文件的个数,包括子文件夹下的
    • ls -lR /opt | grep "^-" | wc -l
  • 统计 /opt 文件夹下目录的个数,包括子文件夹下的
    • ls -lR /opt | grep "^d" | wc -l
  • 以树状显示目录结构
    • yum install tree
    • tree 指定目录
  • wc 命令
    • Linux 系统中的 wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
    • wc [选项] [文件]
命令 含义
-c 统计字节数
-l 统计行数
-m 统计字符数,这个选项不能与 -c 一起使用
-w 统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串
-L 统计最长行的长度

第13章 Linux 实操篇-网络配置

  • 查看网络配置
  • Windows 系统:ipconfig
  • Linux 系统:ifconfig
  • Linux 网络环境配置
  • 第一种方式:自动获取 IP
    • 用户登录后,通过界面来设置自动获取 IP。
    • 缺点: Linux 启动后,每次自动获取的 IP 地址可能不一样。这个不适用于服务器,因为服务器 IP 是需要固定的。
  • 第二种方式:固定 IP
    • 通过修改配置文件来指定 IP
    • 配置文件根据网卡不同名字有所区别,但文件路径一致:/etc/sysconfig/network-scripts/,常见的配置文件名有 ifcfg-eth0 或者 ifcfg-ens33,可以通过 ifconfig 查看后缀。
    • 以 ifcfg-ens33 为例,配置文件需要修改的内容如后面的代码块所示。
    • 修改后,重启网络服务或者重启系统生效:service network restart 或者 reboot
BOOTPROTO=static # 静态 IP
IPADDR=192.168.59.134 # 本机 IP 地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.59.2 # 默认网关
DNS1=8.8.8.8 # 域名解析器
DNS2=8.8.4.4
  • 设置主机名和 hosts 映射
  • 设置主机名
    • 为了方便记忆,可以给 Linux 系统主机设置主机名,也可以根据需要修改主机名(大数据用到)。
    • 使用 hostname 查看当前主机名
    • 如需修改在文件 /etc/hostname 编辑即可
    • 修改后,重启系统生效
  • 设置 hosts 映射
    hosts 映射可以使主机名和系统 IP 地址建立映射联系,即通过主机名就可以连接到某个主机系统,省去了 IP 地址的麻烦。
    hosts 是一个文本文件,用来记录 IP 和 Hostname(主机名)的映射关系。
    除去 hosts 文件,DNS 是互联网上作为域名和 IP 地址相互映射的一个分布式数据库。Domain Name System 的缩写,翻译过来就是域名系统。
    • Windows:在 C:\Windows\System32\drivers\etc\hosts 文件中指定即可。如192.168.130.23 CentOS-PC
    • Linux:在 /etc/hosts 文件中指定即可。如192.168.100.13 Windows-PC

第14章 Linux 实操篇-进程管理(重点)

  • 基本介绍
  • 在 Linux 中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号,即进程号,PID。
  • 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
  • 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才才结束。
  • 显示系统执行的进程
  • ps -aux:显示当前终端所有进程。
  • ps -aux | more:配合 more 命令,分屏显示进程信息,便于查看。
  • ps -aux | grep 特定服务:配合 grep 命令,查看特定的进程信息。比如 ps -aux | grep sshd。
  • ps -ef:以全格式显示当前所有的进程,也可以查看进程的父进程,父进程符号为 PPID。
  • ps -ef | grep 特定服务:配合 grep 命令,查看特定进程的父进程。比如 ps -ef | grep sshd。
  • 终止进程 kill 和 killall
  • kill [选项] 进程号:通过进程号杀死进程。
  • killall 进程名称:通过进程名称杀死进程,也支持通配符。杀死该进程的同时,该进程下的子进程也会被杀死。
  • 常用选项:-9表示强制进程立即停止。
  • 常用实例
    • 踢掉某个非法登录用户:ps -aux | grep sshd 查看登录用户的进程号,后 kill 登录用户的进程号。
    • 终止远程登录服务 sshd,在适当时候再次重启 sshd 服务:kill sshd对应的进程号,再运行 /bin/systemctl start sshd.service
    • 终止多个 gedit 编辑器:killall gedit。
    • 强制杀掉一个终端:kill -9 bash对应的进程号
  • 查看进程树 pstree
  • pstree [选项]:可以更加直观的来看进程信息。
  • 常用选项:-p 显示进程的 PID,-u 显示进程的所属用户。
  • pstree -p:树状的形式显示进程的 PID。
  • pstree -u:树状的形式显示进程的用户。
  • 服务(service)管理

服务本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql、sshd、防火墙等),因此我们又称为守护进程,是 Linux 中非常重要的知识点。

  • service 管理指令
    • service 服务名 [start | stop | restart | reload | status]
    • 在 CentOS 7.0 后 不再使用 service ,而是 systemctl(后面专门介绍)。
    • service 指令管理的服务在 /etc/init.d 查看,即 ls -l /etc/init.d 命令。
  • service 管理指令案例
    使用 service 指令,查看、关闭、启动 network。
    • service network status
    • service network stop
    • service network start
  • 查看服务名
    • 方式一:使用 setup -> 系统服务 就可以查看(包括 service 和 systemctl),带星号的是开机自启动的服务。
    • 方式二:运行 ls -l /etc/init.d 只能查看 service 管理的服务。
  • 服务的运行级别
    Linux 系统有7种运行级别(runlevel):常用的是级别3和5。
    • 运行级别 0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动。
    • 运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆。
    • 运行级别 2:多用户状态(没有 NFS),不支持网络。
    • 运行级别 3:完全的多用户状态(有 NFS),登陆后进入控制台命令行模式。
    • 运行级别 4:系统未使用,保留。
    • 运行级别 5:X11 控制台,登陆后进入图形 GUI 模式
    • 运行级别 6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。
  • CentOS 7后运行级别说明
    • 在 /etc/initab 进行了简化,multi-user.target 等同于运行级别3,graphical.target 等同于运行级别5。
    • systemctl get-default:获取当前的运行级别;
    • systemctl set-default multi-user.target:将默认运行级别设置为 mulit-user。
  • chkconfig 指令

通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭,此处的服务是指 service 指令管理的服务,在 /etc/init.d 查看,即 ls -l /etc/init.d 命令。
chkconfig 重新设置服务自启动或关闭后,需要重启机器才能生效。
注意:CentOS 7.0之后,很多服务使用 systemctl 管理。

  • 基本语法
    • chkconfig --list | grep 服务名
    • chkconfig 服务名 --list
    • chkconfig --level 5 服务名 on/off
  • 应用实例
    • 将 sshd 服务在运行级别5下设置为不自动启动:chkconfig --level 5 sshd off
    • 显示当前系统所有服务的各个运行级别的运行状态:chkconfig --list
    • 将 network 服务在运行级别3下设置为不自动启动:chkconfig --level 3 network off
  • systemctl 管理指令
  • 基本语法
    • systemctl [start | stop | restart | status] 服务名
    • service 指令管理的服务在 /usr/lib/systemd/system 查看,即 ls -l /usr/lib/systemd/system 命令。
  • systemctl 设置服务自启动状态
    • systemctl list-unit-files| grep 服务名:查看服务开机启动状态,使用 grep 进行过滤。
    • systemctl enable 服务名:设置服务开机自启动。
    • systemctl disenable 服务名:关闭服务开机自启动。
    • systemctl is-enable 服务名:查询某个服务是否开机自启动。
  • 查看服务名
    • 使用 ls -l /usr/lib/systemd/system 命令查看需要的服务名。
  • 服务运行级别
    • systemctl [start | stop] 服务名 一般在运行级别3和5执行,没有再作具体区分。
  • 应用案例
    查看当前防火墙的状况,关闭防火墙和重启防火墙。
    • 使用 ls -l /usr/lib/systemd/system 命令查看防火墙服务名为 firewalld.service。
    • systemctl status firewalld
    • systemctl stop firewalld
    • systemctl start firewalld
  • 细节讨论
    • 关闭或启用防火墙后,立即生效。
    • 这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
    • 如果设置某个服务自启动或关闭永久生效,要使用 systemctl [enable/disable] 服务名。
  • 打开或关闭指定端口

在真正的生产环境,往往需要将防火墙打开。但如果把防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯。这时,需要打开指定的端口。

  • firewall 指令
    • 打开端口:firewall-cmd --permanent --add-port=端口号/协议
    • 关闭端口:firewall-cmd --permanent --remove-port=端口号/协议
    • 重新载入,才能生效:firewall-cmd --reload
    • 查询端口是否开放:firewall-cmd --query-port=端口号/协议
    • 端口号和协议可以通过 netstat 进行监听
  • 应用案例
    • 启用防火墙,测试111端口能否 telnet,不能
    • 开放111端口:firewall-cmd --permanent --add-port=111/tcp;firewall-cmd --reload
    • 再次关闭111端口:firewall-cmd --permanent --remove-port=111/tcp;firewall-cmd --reload
  • 动态监控进程

top 与 ps 命令很相似。它们都用来显示正在执行的进程。top 与 ps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。

  • 基本语法
    top [选项]
  • 选项说明
选项 含义
-d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用 s 交互命令来改变。
-i 使 top 不显示任何闲置或者僵死进程。
-p 通过指定监控进程 ID 来仅仅监控某个进程的状态。
  • 应用实例
    • 监视特定用户:输入 top 命令,查看执行的进程,然后输入 u 回车,再输入用户名。
    • 终止指定的进程:输入 top 命令,查看执行的进程,然后输入 k 回车,再输入要结束的进程 PID 号。
  • 监控网络状态
  • 查看系统网络情况 netstat
    • netstat [选项]
    • netstat -anp:按一定顺序排列显示哪个进程在调用网络端口
  • 应用案例
    • 查看服务名为 sshd 服务的信息:netstat -anp | grep sshd

第15章 Linux 实操篇-RPM 和 YUM

  • RPM 包的管理

一种用于互联网下载包的打包及安装工具,它包含在某些 Linux 发行版中。它生成具有.RPM 扩展名的文件。RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 Windows 的 setup.exe,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。Linux 的发行版本都有采用(RedHat,CentOS等等),可以算是公认的行业标准了。

  • RPM 包名基本格式
    RPM 包名:firefox-45.0.1-1.el6.centos.x86_64.rpm
    • 名称:firefox
    • 版本号:45.0.1-1
    • 适用操作系统:el6.centos.x86_64表示64位系统
    • 如果是 i686、i386表示32位系统,noarch 表示通用
  • RPM 包的其它查询指令
    • rpm -qa:查询所安装的所有 rpm 软件包
    • rpm -qa | more:分页显示
    • rpm -qa | grep 软件包名:查询所安装的是否有该软件包
    • rpm -qi 软件包名:查询软件包信息
    • rpm -ql 软件包名:查询软件包中的文件
    • rpm -qf 文件全路径:查询文件所属的软件包,如rpm -qf /etc/passwd
  • 卸载 RPM 包
    • rpm -e RPM 软件包名:-e 代表 earse
  • 细节问题
    • 如果其它软件包依赖于要卸载的软件包,卸载时则会产生错误信息。
    • 如果就是要删除这个 rpm 包,可以增加参数 --nodeps,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行。如:rpm -e --nodeps foo,带上 --nodeps 就是强制删除。
  • 安装 RPM 包
    • rpm -ivh RPM 软件包路径:软件包必须已下载到磁盘
    • 参数说明:i=install 安装、v=verbose 提示、h=hash 进度条
  • YUM

YUM 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 YUM 的前提是可以联网。

  • YUM 的基本指令
    • 查询 YUM 服务器是否有需要安装的软件:yum list | grep 软件名
    • 安装指定的 YUM 包:yum install 软件名