云网牛站
所在位置:首页 > Linux培训 > Linux新人培训第七章:基础系统管理

Linux新人培训第七章:基础系统管理

2018-05-07 16:38:41作者:ywnz稿源:云网牛站

本章节主要内容为:时间和日期管理、键盘配置、任务自动化、服务管理、内核模块管理、Kdump、系统信息收集。

 

注:本Linux新人培训教程以中兴新支点服务器操作系统(CGSL)为例。

 

本章主要介绍常用的系统管理基础操作,包括时间和日期、键盘、控制台、任务自动化、服务等管理。

 

7.1.时间和日期管理

时间和日期管理工具允许用户改变系统日期和时间;配置系统使用的时区;以及设置网络时间协议(NTP)守护进程来与时间服务器的系统时钟同步。

须要进入图形环境并具备 root 用户权限才能使用该工具。要从桌面上启动这个程序,可点击【应用程序】->【系统工具】->【设置】->【日期和时间】。

7.1.1.日期和时间属性

如图 7-1 所示,所出现的第一个带活页标签的窗口被用来配置系统日期、时间。

Linux新人培训第七章:基础系统管理

图 7-1 时间和日期属性

要改变日期和时间,需要先取消【网络时间】(NTP),然后通过鼠标点击来修改年、月、日、时、分、秒。

7.1.2 时区配置

要配置系统时区,点击【时区】标签。时区可以通过互动地图来改变,也可以从地图下面的列表中选择想要的时区。要使用地图,点击代表您所在时区的城市,一个红色的圆点会出现,地图下的时区列表中的选择也会相应改变。

Linux新人培训第七章:基础系统管理

图 7-2 时区设置

 

7.2.键盘配置

安装程序允许用户为他们的系统配置键盘布局。

显示目前的键盘布局设置:

# localectl status

System Locale: LANG=zh_CN.UTF-8

VC Keymap: us

X11 Layout: cn,us

X11 Variant: ,

列举出可以设置的键盘布局设置:

# localectl list-keymaps  

设置键盘布局设置:

# localectl set-keymap map

 

7.3.任务自动化

在 CGSL 中,任务可以被配置在指定的时间段、指定的日期、或系统平均载量低于指定的数量时自动运行。CGSL 预配置了对重要系统任务的运行,以便使系统能够时时被更新。譬如,被 locate 命令使用的 slocate 数据库每日都被更新。系统管理员可使用自动化的任务来执行定期备份、监控系统、运行定制脚本等等。

CGSL 随带几个自动化任务的工具:cron、at、和 batch。

7.3.1.cron

cron 是一个可以用来根据时间、日期、月份、星期的组合来调度对重复任务的执行的守护进程。

cron 假定系统持续运行。如果当某任务被调度时系统不在运行,该任务就不会被执行。CGSL 中,由 crond 服务提供相关功能,且默认安装并启用了 crond 服务。

7.3.1.1.配置 cron 任务

cron 的主配置文件是/etc/crontab,它包括下面几行:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

前四行是用来配置 cron 任务运行环境的变量。Shell 变量的值告诉系统要使用哪个  Shell 环境(在这个例子里是 bash Shell);PATH 变量定义用来执行命令的路径。cron 任务的输出被邮寄给 MAILTO 变量定义的用户名。如果 MAILTO 变量被定义为空白字符串(MAILTO=“”),电子邮件就不会被寄出。HOME 变量可以用来设置在执行命令或脚本时使用的主目录。

/etc/crontab 文件中的每一行都代表一项任务,它的格式是:

minute   hour   day   month   dayofweek   command  

minute:分钟,从 0 到 59 之间的任何整数

hour:小时,从 0 到 23 之间的任何整数

day:日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)

month:月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)

dayofweek:星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)

command:要执行的命令(命令可以是 ls /proc >> /tmp/proc 之类的命令,也可以是执行您自行编写的脚本的命令。)

在以上任何值中,星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。

整数间的短线(-)指定一个整数范围。譬如,1-4 意味着整数 1、2、3、4。

用逗号(,)隔开的一系列值指定一个列表。譬如,3,4,6,8 标明这四个指定的整数。

正斜线(/)可以用来指定间隔频率。在范围后加上/<integer>意味着在范围内可以跳过 integer。譬如,0-59/2 可以用来在分钟字段定义每两分钟。间隔频率值还可以和星号一起使用。例如,*/3 的值可以用在月份字段中表示每三个月运行一次任务。

开头为井号(#)的行是注释,不会被处理。

如您在/etc/crontab 文件中所见,它使用 run-parts 脚本来执行/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly 和/etc/cron.monthly 目录中的脚本,这些脚本被相应地每小时、每日、每周、或每月执行。这些目录中的文件应该是 Shell 脚本。

如果某 cron 任务需要根据调度来执行,而不是每小时、每日、每周、或每月地执行,它可以被添加到/etc/cron.d 目录中。该目录中的所有文件使用和/etc/crontab 中一样的语法,请参见以下范例。

#record the memory usage of the system every monday

#at 3:30AM in the file /tmp/meminfo

30 3 * * mon cat /proc/meminfo >> /tmp/meminfo

#run custom script the first day of every month at 4:10AM

10 4 1 * * /root/scripts/backup.sh

根用户以外的用户可以使用 crontab 工具来配置 cron 任务。所有用户定义的 crontab 都被保存在/var/spool/cron 目录中,并使用创建它们的用户身份来执行。要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令,使用由 VISUAL 或 EDITOR 环境变量指定的编辑器来编辑该用户的 crontab。该文件使用的格式和/etc/crontab 相同。当对 crontab 所做的改变被保存后,该 crontab 文件就会根据该用户名被保存,并写入文件/var/spool/cron/username 中。

cron 守护进程每分钟都检查/etc/crontab 文件、etc/cron.d/目录、以及/var/spool/cron 目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个 crontab 文件改变后就不必重新启动守护进程了。

提示:CGSL 自带了 ICT(集成配置)工具,其中提供了图形化的定时任务配置功能(基于 cron 实现),简化了 cron 定时任务的配置和使用,有关 ICT 工具的详细使用说明请参考相应的用户指南文档。

7.3.1.2.cron 权限控制

/etc/cron.allow 和/etc/cron.deny文 件被用来限制对 cron 的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许空格。如果使用控制文件被修改了,cron 守护进程(crond)不必被重启。使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。

无论使用控制文件中的规定如何,根用户都总是可以使用 cron。

如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略。

如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron。

7.3.1.3.crond 服务管理

执行如下命令启动 crond 服务:

#/sbin/service crond start  

执行如下命令停止 crond 服务

#/sbin/service crond stop  

7.3.2.at 和 batch

cron 被用来调度重复的任务,at 命令被用来在指定时间内调度一次性的任务。batch 命令被用来在系统平均载量降到 0.8 以下时执行一次性的任务。

要使用 at 或 batch 命令,您必须安装了 at RPM 软件包,并且 atd 服务必须在运行。要判定该软件包是否被安装了,使用 rpm -q at 命令。要判定该服务是否在运行,使用/sbin/service atd status 命令。

7.3.2.1.配置 at 作业

要在某一指定时间内调度一项一次性作业,键入 at time 命令。这里的 time 是执行命令的时间。

time 参数可以是下面格式中任何一种:

HH:MM 格式:例如,04:00 代表 4:00AM。如果时间已过,它就会在第二天的这一时间执行。

midnight:代表 12:00AM。

noon:代表 12:00PM。

teatime:代表 4:00PM。

英文月名 日期 年份 格式:例如,January 15 2002 代表 2002 年 1 月 15 日。年份可有可无。

MMDDYY、MM/DD/YY、或 MM.DD.YY 格式:例如,011502 代表 2002 年 1 月 15 日。

now + 时间:时间以 minutes、hours、days、或 weeks 为单位。例如, now+5 days 代表命令应该在 5 天之后的此时此刻执行。

时间必须要被先指定,接着是可有可无的日期。关于时间格式的详情,请阅读/usr/share/doc/at-<version>/timespec 文本文件。

键入了 at 命令和它的时间参数后,at>提示就会出现。键入要执行的命令,按【Enter】键,然后键入 Ctrl-D。您可以指定多条命令,方法是键入每一条命令后按【Enter】键。键入所有命令后,按【Enter】键转入一个空行,然后再键入 Ctrl-D。或者,您也可以在提示后输入 Shell 脚本,在脚本的每一行后按【Enter】键,然后在空行处键入 Ctrl-D 来退出。如果输入的是脚本,所用的 Shell 就会是用户的 Shell 环境变量中设置的值,用户的登录 Shell,或是/bin/sh(使用最先发现的)。

如果这组命令或脚本试图在标准输出中显示信息,该输出会用电子邮件方式被邮寄给用户。

使用命令 atq 来查看等待运行的作业。

at 命令的用法能够被制约。

7.3.2.2.配置 batch 作业

要在系统平均载量降到 0.8 以下时执行某项一次性的任务,使用 batch 命令。

键入 batch 命令后,at>提示就会出现。键入要执行的命令,按【Enter】键,然后键入 Ctrl-D。您可以指定多条命令,方法是键入每一条命令后按【Enter】键。键入所有命令后,按【Enter】键转入一个空行,然后再键入 Ctrl-D。或者,您也可以在提示后输入 Shell 脚本,在脚本的每一行后按【Enter】键,然后 在空行处键入 Ctrl-D 来退出。如果输入的是脚本,所用的 Shell 就会是用户的 Shell 环境变量中设置的值,用户的登录 Shell,或是</bin/sh>(使用最先发现的)。系统平均载量一降到 0.8 以下,这组命令或脚本就会被执行。

如果这组命令或脚本试图在标准输出中显示信息,该输出会用电子邮件方式被邮寄给用户。

使用命令 atq 来查看等待运行的作业。

at命令的用法能够被制约。

7.3.2.3.查看等待运行的作业

要查看等待运行的 at 和 batch 作业,使用 atq 命令。它显示一列等待运行的作业,每项作业只占据一行。每一行的格式都是:作业号码、日期、小时、作业类别、以及用户名。用户只能查看他们自己的作业。如果根用户执行 atq 命令,所有用户的全部作业都会被显示。

7.3.2.4.其他的命令行选项

at 和 batch 的其它命令行选项包括:

选项                    

描述

-f

从文件中读取命令或 Shell 脚本,而非在提示后指定它们。

-m

在作业完成后,给用户发送电子邮件。

-v

显示作业将被执行的时间。

7.3.2.5.控制对 at 和 batch 的使用

/etc/at.allow 和/etc/at.deny 文件可以用来限制对 at 和 batch 命令的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许使用空白字符。如果使用控制文件被修改了,at 守护进程(atd)不必被重启。每次用户试图执行 at 或 batch 命令时,使用控制文件都会被读取。

不论使用控制文件如何规定,根用户都总是可以执行 at 和 batch 命令。

如果 at.allow 文件存在,只有其中列出的用户才能使用 at 或 batch 命令,at.deny 文件会被忽略。

如果 at.allow 文件不存在,所有在 at.deny 文件中列出的用户都被禁止使用 at 和 batch 命令。

7.3.2.6.启动和停止 at 服务

要启动 at 服务,使用/sbin/service atd start 命令。要停止该服务,使用/sbin/service atd stop 命令。建议您在引导时启动该服务。关于在引导时自动启动 at 服务的详情,请参阅其他相关介绍。

 

7.4.服务管理

systemd 是 CGSLV5 的系统和服务管理程序,替换了之前的发行本中使用的 SysV。

systemd 与 SysV 和 Linux 标准基本 init 脚本兼容。

systemd 比其他程序有下列优势:

1、强大的平行化功能;

2、使用插槽和 D-Bus 激活启动服务;

3、按需启动守护进程;

4、管理控制组;

5、生成系统状态快照及恢复系统状态。

systemd 组件中 systemctl 代替原来的 service与chkconfig 命令。

7.4.1.systemctl 命令

使用 systemctl 命令可以使某些服务立即启动/停止/重启/启用/禁用,使用如下命令:

1.启动:

# systemctl start <服务>  

2.停止:

# systemctl stop <服务>  

3.重启:

# systemctl restart <服务>  

4.启用:

# systemctl enable <服务>  

5.禁用:

# systemctl disable <服务>

替换的服务例子:

Linux新人培训第七章:基础系统管理

 

7.5.内核模块管理

7.5.1.概述

CGSL 内核具有模块化设计。在引导时,只有少量的驻留内核被载入内存。这之后,无论何时用户要求使用驻留内核中没有的功能,某内核模块(kernel module),有时又称驱动程序(driver)就会被动态地载入内存。

在安装过程中,系统上的硬件会被探测。基于探测结果和用户提供的信息,安装程序会决定哪些模块需要在引导时被载入。安装程序会设置动态载入机制来透明地运行。

也可以通过编辑模块配置文件/etc/modprobe.conf 来手工指定这个硬件使用的模块。

例如,如果某系统包括了一个 SMC EtherPower 10 PCI 网卡,模块配置文件包含以下行:

alias eth0 tulip  

如果系统上添加了第二个网卡,它和第一个网卡一模一样,可在/etc/modprobe.conf 中添加这一行:

alias eth1 tulip

7.5.2.内核模块工具

CGSL 提供了一组管理内核模块的命令。使用这些命令来判定模块是否被成功地载入了,或为新硬件试验不同的模块。

7.5.2.1.lsmod 命令

lsmod 命令显示了当前载入了的模块列表。例如:

Linux新人培训第七章:基础系统管理

图 7-3 当前模块列表

对每行而言,第一列是模块名称;第二列是模块大小;第三列是用量计数。

lsmod 输出和查看/proc/modules 的输出相同。

7.5.2.2.modprobe 命令

要载入内核模块,使用 modprobe 命令,然后跟着内核模块的名称。按照默认设置,modprobe 试图从</lib/modules/<kernel-version>/kernel/drivers/>子目录中载入模块。每类模块都有一个子目录,如用于网络接口驱动程序的<net/>子目录。某些内核模块有模块依赖关系,这意味着我们必须首先载入其它模块才能载入这些模块。modprobe 命令检查这些依赖关系,并在载入指定模块前载入满足这些依赖关系的模块。

例如:

#modprobe udf  

这个命令载入任何满足依赖关系的模块,然后再载入 hid 模块。

要在 modprobe 执行命令的时候把它们都显示在屏幕上,使用-v 选项。例如:

#modprobe -v udf  

所显示的输出和下面相似:

#insmod /lib/modules/2.6.32-71.el6.i686/kernel/lib/crc-itu-t.ko

#insmod /lib/modules/2.6.32-71.el6.i686/kernel/fs/udf/udf.ko

7.5.2.3.insmod 命令

还可以使用 insmod 命令来载入内核模块;不过它不解决依赖关系。因此,推荐我们使用/sbin/modprobe 命令。

7.5.2.4.rmmod 命令

要卸载内核模块,使用 rmmod 命令和模块名称。rmmod 工具只卸载不再使用的、和不是正被使用的模块所依赖的模块。

例如:

#rmmod udf  

这个命令卸载udf内核模块。

7.5.2.5.modinfo 命令

使用 modinfo 命令来显示关于内核模块的信息。一般语法是:

#modinfo [options] <module>  

包括-d 在内的选项显示了关于模块的简短描述,-p 选项列举了模块所支持的参数。要获取选项的完整列表,请参阅 modinfo 的说明书页(man modinfo)。

 

7.6.Kdump

Kdump 可以在系统发生崩溃的时候,转储故障现场供事后分析定位。CGSL V5 默认已开启 Kdump 功能。请查看</boot/grub2/grub.conf>文件,启动参数中应有 crashkernel=auto 参数,如下:

linux16 /vmlinuz-3.10.0-123.el7.x86_64

root=UUID=963659fb-29c7-443e-bcc1-1b1dad8b5a76

ro

rd.lvm.lv=ncl/swap

vconsole.font=latarcyrheb-sun16

rd.lvm.lv=ncl/root

crashkernel=auto

vconsole.keymap=us

rhgb

quiet

LANG=zh_CN.UTF-8

可执行如下命令检查Kdump服务是否开启:

# systemctl status kdump.service  

当系统出现内核 panic 时,系统会自动重启(重启过程会完成内核转储,时间比正常重启稍长,请耐心等待)。重启完成后会在/var/crash/目录中生成相应的 vmcore 文件。

 

7.7.系统信息收集

在学习如何配置系统之前,应该学习如何收集基本的系统信息。譬如,应该知道如何找出关于空闲内存的数量、可用硬盘驱动器空间的数量,硬盘分区方案,以及正在运行进程的信息。

本节将介绍如何使用几个简单程序来从CGSL系统中检索这类信息。

7.7.1.进程信息

ps 命令显示一个当前系统进程的列表,常用的命令(带选项)为 ps aux 和 ps -ef 命令。命令结果列表是一个静态列表,即在启用这项命令时正在运行的进程的快照。如果您需要一个时刻更新的运行进程列表,可使用下面描述的 top 命令。

ps 的输出会很长。要防止它快速从屏幕中滑过,您可以把它管道输出给 less 命令:

#ps aux | less  

也可以使用 ps 命令和 grep 命令的组合来查看某进程是否在运行。譬如,要判定 Emacs 是否在运行,使用下面这个命令:

#ps aux | grep emacs  

top 命令显示了当前正运行的进程以及关于它们的重要信息,包括它们的内存和 CPU 用量。该列表既是真实时间的也是互动的。以下提供了一个 top 的输出示例:

Linux新人培训第七章:基础系统管理

图 7-4 top 显示

要退出 top,按[q]键。

可以和 top 一起使用的互动命令包括:

表 7-1 互动的 top 命令

命令

  描述

  [Space]

  立即刷新显示

  [h]

  显示帮助屏幕

  [k]

  杀死某进程,会被提示输入进程ID以及要发送给它的信号

  [n]

  改变要显示的进程数量,会被提示输入数量

  [u]

  按用户排序

  [M]

  按内存用量排序

  [P]

  按 CPU 用量排序

提示:按默认设置,ps 和 top 只显示进程信息,如果要查看所有线程信息,请使用 ps -elLf 命令或在 top 中键入[Shift]-[H]组合键。

另外,CGSL 还提供了图形化的系统监视器。要从桌面上启动它,选择面板上的【系统】->【管理】->【系统监视器】或在图形环境中的 Shell 提示下键入 gnome-system-monitor。然后选择【进程】标签,如图 7-5 所示。

Linux新人培训第七章:基础系统管理

图 7-5 GNOME 系统监视器(1)

系统监视器允许在正运行的进程列表中通过【查看】里的各标签搜索进程,包括查看所有进程、您拥有的进程、或活跃的进程。 要停止某进程,选择该进程,然后点击【结束进程】。这有助于结束对用户输入已不再做出反应的进程。

若要按指定列的信息来排序,点击该列的名称。信息被排序的那一列会用深灰色显示。

若需要要改变GNOME系统监控器的默认设置,选择【编辑】->【首选项】,点击【进程】和【资源】标签,可以允许配置更新间隔,每个进程默认显示的信息,以及系统监视器图表的颜色。

7.7.2.内存信息

free 命令显示系统的物理内存和交换区的总量,以及已使用的、空闲的、共享的、在内核缓冲内的、和被缓存的内存数量。如下命令结果中单位为 KB。

Linux新人培训第七章:基础系统管理

图 7-6 free 命令行显示

提示:free 命令第 3 行中的 used= 第 2 行的 used-buffers-cached,第 3 行中的 free= 第 2 行的 free+buffers+cached。因为 buffers 和 cached 为系统缓存,用于提高系统效率,通常可在需要时由系统自动回收,所以,通常应该以第 3 行的 used 和 free 表示当前系统内存实际使用的情况。

另外,CGSL 提供的图形化的系统监视器工具中也可以查看内存信息,在系统监视器工具中选择【资源】标签,如图 7-7 所示。

Linux新人培训第七章:基础系统管理

图 7-7 GNOME 系统监视器(2)

7.7.3.文件系统信息

df 命令报告系统的磁盘空间用量。如果在 Shell 提示下键入了 df 命令,它的输出与下面相似:

Filesystem 1k-blocks Used Available Use% Mounted on

/dev/hda2 10325716 2902060 6899140 30% /

/dev/hda1 15554 8656 6095 59% /boot

/dev/hda3 20722644 2664256 17005732 14% /home

none 256796 0 256796 0% /dev/shm

按照默认设置,已用的和可用的磁盘空间以KB为单位显示。如需以易读方式显示,可以使用df -h命令。输出类似于:

Filesystem Size Used Avail Use% Mounted on

/dev/hda2 9.8G 2.8G 6.5G 30% /

/dev/hda1 15M 8.5M 5.9M 59% /boot

/dev/hda3 20G 2.6G 16G 14% /home

none 251M 0 250M 0% /dev/shm

在分区列表中,有一项是/dev/shm。该条目代表系统的虚拟内存文件系统。

du 命令显示被目录中的文件使用的估计空间数量。如果在 Shell 提示下键入了 du 命令,每个子目录的用量都会在列表中显示,当前目录和子目录的总和也会在列表的最后一行中被显示。如果我们不想查看每个子目录的用量,使用 du -hs 命令来使用人可读的格式只列出目录用量总和。使用 du -help 命令来查看更多选项。

要查看图形化的系统分区和磁盘空间用量,使用【系统监视器】->【file systems】标签,如图7-8所示。

Linux新人培训第七章:基础系统管理

图 7-8 GNOME系统监视器(3)

 

相关主题

Linux新手大礼包:学习Linux你必须知道的那些事儿

精选文章
热门文章