本章节主要内容为:时间和日期管理、键盘配置、任务自动化、服务管理、内核模块管理、Kdump、系统信息收集。
注:本Linux新人培训教程以中兴新支点服务器操作系统(CGSL)为例。
本章主要介绍常用的系统管理基础操作,包括时间和日期、键盘、控制台、任务自动化、服务等管理。
7.1.时间和日期管理 时间和日期管理工具允许用户改变系统日期和时间;配置系统使用的时区;以及设置网络时间协议(NTP)守护进程来与时间服务器的系统时钟同步。 须要进入图形环境并具备 root 用户权限才能使用该工具。要从桌面上启动这个程序,可点击【应用程序】->【系统工具】->【设置】->【日期和时间】。 7.1.1.日期和时间属性 如图 7-1 所示,所出现的第一个带活页标签的窗口被用来配置系统日期、时间。
图 7-1 时间和日期属性 要改变日期和时间,需要先取消【网络时间】(NTP),然后通过鼠标点击来修改年、月、日、时、分、秒。 7.1.2 时区配置 要配置系统时区,点击【时区】标签。时区可以通过互动地图来改变,也可以从地图下面的列表中选择想要的时区。要使用地图,点击代表您所在时区的城市,一个红色的圆点会出现,地图下的时区列表中的选择也会相应改变。
图 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 的其它命令行选项包括:
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 <服务> 替换的服务例子:
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 命令显示了当前载入了的模块列表。例如:
图 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 的输出示例:
图 7-4 top 显示 要退出 top,按[q]键。 可以和 top 一起使用的互动命令包括: 表 7-1 互动的 top 命令
提示:按默认设置,ps 和 top 只显示进程信息,如果要查看所有线程信息,请使用 ps -elLf 命令或在 top 中键入[Shift]-[H]组合键。 另外,CGSL 还提供了图形化的系统监视器。要从桌面上启动它,选择面板上的【系统】->【管理】->【系统监视器】或在图形环境中的 Shell 提示下键入 gnome-system-monitor。然后选择【进程】标签,如图 7-5 所示。
图 7-5 GNOME 系统监视器(1) 系统监视器允许在正运行的进程列表中通过【查看】里的各标签搜索进程,包括查看所有进程、您拥有的进程、或活跃的进程。 要停止某进程,选择该进程,然后点击【结束进程】。这有助于结束对用户输入已不再做出反应的进程。 若要按指定列的信息来排序,点击该列的名称。信息被排序的那一列会用深灰色显示。 若需要要改变GNOME系统监控器的默认设置,选择【编辑】->【首选项】,点击【进程】和【资源】标签,可以允许配置更新间隔,每个进程默认显示的信息,以及系统监视器图表的颜色。 7.7.2.内存信息 free 命令显示系统的物理内存和交换区的总量,以及已使用的、空闲的、共享的、在内核缓冲内的、和被缓存的内存数量。如下命令结果中单位为 KB。
图 7-6 free 命令行显示 提示:free 命令第 3 行中的 used= 第 2 行的 used-buffers-cached,第 3 行中的 free= 第 2 行的 free+buffers+cached。因为 buffers 和 cached 为系统缓存,用于提高系统效率,通常可在需要时由系统自动回收,所以,通常应该以第 3 行的 used 和 free 表示当前系统内存实际使用的情况。 另外,CGSL 提供的图形化的系统监视器工具中也可以查看内存信息,在系统监视器工具中选择【资源】标签,如图 7-7 所示。
图 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所示。
图 7-8 GNOME系统监视器(3)
相关主题 |