【Solaris10 专题】系统资源管理
目录:
Part-1 Solaris 10系统资源的初级管理
# 1 系统资源管理概述
# 2 显示和改变系统资源信息
# 3 管理磁盘空间
# 4 使用Quota管理磁盘空间
# 5 系统资源的定时调用
Part-2 系统性能的监控与进程的管理
# 1 监控系统性能
# 2 系统进程的管理
Part-3 Solaris 10系统资源的高级管理
# 1 资源容器
# 2 项目和任务
# 3 资源控制
# 4 公平共享调度(FSS)
# 5 使用资源上限守护程序管理物理内存
# 6 动态资源池
Part -4 系统信息的管理
# 1 信息管理概述
# 2 系统日志信息管理
# 3 系统core文件的管理
# 4 系统crash信息的管理
Part 1 Solaris 10系统资源的初级管理
为大家介绍Solaris 10的系统资源管理方面的初级知识。由于系统资源直接关系着服务提供商的服务质量和软件开发商的软件质量,所以它是系统管理人员和软件开发人员的共同关注点。
1 系统资源管理概述
在计算机系统中,分配给用户使用的各种硬件和软件设施统称为系统资源。系统资源包括两大类:硬件资源和信息资源。其中,硬件资源分为处理器、存储器、I/O设备等,I/O设备又分为输入型设备、输出型设备和存储型设备;信息资源则分为程序和数据等资源。
操作系统的重要任务之一是有序地管理计算机系统中的硬件、软件资源,跟踪资源使用状况,满足用户对资源的需求,协调各程序对资源的使用冲突,为用户提供简单、有效的资源使用方法,最大限度地实现各类资源的共享,提高资源利用率,从而使得计算机系统的性能有很大提高。
对于从控制程序执行,扩充其功能,屏蔽使用细节,方便用户使用,组织合理工作流程,改善人机界面等方面,我们都可以理解为系统资源管理。
本章将从最基本的系统资源管理开始,逐步向读者介绍系统资源管理的知识。
首先,我们需要收集一些关于系统资源的信息。只有在了解系统资源信息后,才可以使我们对整个系统资源的使用情况有一个宏观的规划,从而实现系统资源的优化配置。
然后介绍对最常见的硬件资源,即硬盘的管理,对系统性能影响比较大的处理器和内存的管理将在第15章中介绍。
在Solaris系统中,我们可以用cron和at命令来定时执行命令或程序,以实现资源的定时调用。但本章的系统资源管理不包括用户如何分配资源和控制资源。这部分的内容,请参见第16章。
下面简要介绍在Solaris 10中新出现的两个管理资源工具:
psrinfo命令
在以前的Solaris版本中,psrinfo命令为我们提供物理CPU方面的信息。在Solaris 10中,它增加了新的识别多线程属性,也可以提供CPU组方面的信息了。新增的-p属性可显示所有物理CPU的信息;而-pv是显示所有物理CPU和由物理CPU组成的CPU组。
localeadm命令
localeadm命令是完全新增的,它可以让用户在不重新安装操作系统的情况下改变系统的地区属性。
1- 2显示和改变系统资源信息
本节主要介绍一些查看和改变系统的综合资源信息的方法。这些资源信息的内容可能是比较宏观、笼统的,但对我们了解系统资源的总体状况是非常有帮助的。
显示系统资源信息
作为系统管理员,需要经常查看系统资源信息,以确保系统资源的有效管理,保障系统的稳定运行。
“工欲善其事,必先利其器”,我们要首先了解显示系统资源信息的命令工具。下面列出了显示一般的系统信息的命令。
命 令--命令说明--帮 助
date--显示日期和时间--date(1)
hostid--显示主机ID号--hostid(1)
isainfo--显示系统内核支持的应用程序的比特位数--isainfo(1)
isalist--显示在x86平台上系统支持应用程序的比特位数--psrinfo(1M)
localeadm--进行系统的时区设置--localeadm(1M)
prtconf--列出系统硬件信息--prtconf(1M)
psrinfo--显示CPU的类型--psrinfo(1M)
showrev--显示主机名、主机ID、内核版本、应用程序架构、硬件提供者信息等--showrev(1M)
uname--显示操作系统的名称、版本、节点名、硬件名和CPU类型--.name(1)
1.如何确认Solaris操作系统是32位兼容的还是64位兼容的
命令介绍:
# isainfo options
isainfo命令在不使用任何参数的情况下,也能显示操作系统的版本。
其中,
-v 显示概要信息。
-b 显示本地应用软件的比特位数。
例1 在SPARC平台上,确认Solaris操作系统是32位兼容的还是64位兼容的。
(1)在UltraSPARC硬件平台上,运行以前使用的32位内核版本的Solaris操作系统,命令及输出如下:
$ isainfo -v
32-bit SPARC applications
这个输出意味着操作系统支持32位应用程序。
(2)在UltraSPARC硬件平台上,运行64位内核的Solaris操作系统的命令和输出如下:
$ isainfo -v
64-bit sparcv9 applications
32-bit SPARC applications
这个输出意味着系统能够支持32位和64位的应用程序。
请注意,使用isainfo –b命令可以显示支持本地应用软件的bit位数。
(3)在SPARC平台、 x86平台上运行32位内核的Solaris操作系统的命令和输出如下:
$ isainfo -b
32
(4)在64位UltraSPARC平台上运行64位内核Solaris操作系统的命令和输出如下:
$ isainfo -b
64
需要说明的是:虽然在64位UltraSPARC系统上能运行所有应用程序,但64位应用程序最好还是在64位的系统上运行。
例2 在x86平台上,确认Solaris操作系统是32位兼容的还是64位兼容。
(1)在x86平台上运行64位内核的Solaris操作系统的命令和输出如下:
$ isainfo
amd64 i386
此输出意味着系统能支持64位的应用程序。
(2)在x86平台上运行32位内核的Solaris操作系统的命令和输出如下:
$ isainfo -v
64-bit amd64 applications
fpu tsc cx8 cmov mmx ammx a3dnow a3dnowx fxsr sse sse2
32-bit i386 applications
fpu tsc cx8 cmov mmx ammx a3dnow a3dnowx fxsr sse sse2
此输出意味着系统能支持64位和32位的应用程序。
(3)在x86平台上运行32位操作系统的命令和输出如下:
$ isainfo -b
32
(4)在x86平台上运行64位操作系统的命令和输出如下:
$ isainfo -b
64
(5)也可以使用isalist命令确认x86平台运行的是32位还是64位操作系统:
$ isalist
amd64 pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
此输出表明此系统是64位系统。
2.如何显示物理CPU的类型
使用psrinfo -p命令来显示所有物理的CPU的数量。
例3 显示系统中物理CPU的数量。
$ psrinfo -p
1
由输出可见,系统中只有一个物理CPU。
例4使用psrinfo -pv命令来显示物理CPU和关联的虚拟CPU。
$ psrinfo -pv
The UltraSPARC-IV physical processor has 2 virtual processors (8, 520)
The UltraSPARC-IV physical processor has 2 virtual processors (9, 521)
The UltraSPARC-IV physical processor has 2 virtual processors (10, 522)
The UltraSPARC-IV physical processor has 2 virtual processors (11, 523)
The UltraSPARC-III+ physical processor has 1 virtual processor (16)
The UltraSPARC-III+ physical processor has 1 virtual processor (17)
The UltraSPARC-III+ physical processor has 1 virtual processor (18)
The UltraSPARC-III+ physical processor has 1 virtual processor (19)
例5 在x86平台上使用命令psrinfo -pv。
$ psrinfo -pv
The i386 physical processor has 2 virtual processors (0, 2)
The i386 physical processor has 2 virtual processors (1, 3)
3.如何显示虚拟CPU的类型
(1)使用psrinfo -v 命令来显示CPU的类型:
$ psrinfo -v
(2)在x86平台上,使用isalist命令来显示虚拟CPU的类型:
$ isalist
例6 在SPARC平台上,显示系统CPU的类型。
$ psrinfo -v
Status of virtual processor 0 as of: 04/16/2004 10:32:13
on-line since 03/22/2004 19:18:27.
The sparcv9 processor operates at 650 MHz,
and has a sparcv9 floating point processor.
例7 在x86平台上,显示系统CPU的类型。
$ isalist
pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
4.如何显示Solaris版本信息
操作系统的版本信息保留在/etc/release文件中。
例8 显示操作系统的版本信息。
$ more /etc/release
Solaris 10 s10_51 SPARC
Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
Use is subject to license terms.
Assembled 21 January 2004
5.如何显示系统综合信息
使用showrev –a命令可以显示系统的所有综合信息。
例9 显示系统的所有综合信息。
$ showrev -a
Hostname: touchstone
Hostid: 8099dfb9
Release: 5.10
Kernel architecture: sun4u
Application architecture: SPARC
Hardware provider: Sun_Microsystems
Domain: boulder.Central.Sun.COM
Kernel version: SunOS 5.10 s10_46
OpenWindows version:
Solaris X10 Version 6.6.2 20 October 2003
No patches are installed
6.如何显示系统主机ID号、系统内存信息和系统日期时间
例10 显示系统主机ID号、系统内存信息和系统日期时间。
(1)使用hostid命令可以显示系统主机ID号:
$ hostid
80a5d34c
(2)使用下面命令来显示系统内存信息:
# prtconf | grep Memory
Memory size: 128 Megabytes
(3)使用date命令来显示系统日期时间:
$ date
Wed Jan 21 17:32:59 MST 2004
7.如何显示和改变Locale设置
例11 显示和改变系统时区设置。
(1)显示系统时区:
# localeadm -l
Checking for installed pkgs. This could take a while.
Checking for Australasia region (aua)
(1of2 pkgs)
|......|
The following regions are installed on concordance on Wed Dec 17 15:13:00 MST 2003
POSIX (C)
Central Europe (ceu)
[ Austria, Czech Republic, Germany, Hungary, Poland, Slovakia,
Switzerland (German), Switzerland (French) ]
Done.
上面例子中系统时区为澳大利亚,下面将其改为欧洲中部。
(2)改变系统Locale设置:
# localeadm -q ceu
locale/region name is ceu
Checking for Central Europe region (ceu)
The Central Europe region (ceu) is installed on this system
瞧,现在系统的时区已经是欧洲中部了。
8.显示系统已经运行的时间
使用命令uptime可以查看系统运行了多久。
例12 显示系统运行了多久。
# uptime
11:27pm up 9 days,7:12,1 user,load average:0.07,0.12,0.14
显示目前时间是11:27pm,而系统已经开机了9天又7:12之多,目前有一个使用者在线上,过去1,5,15分钟系统平均负荷分别为0.07,0.12,0.14。
9.查看系统内存
prtconf命令可以查看关于系统硬件设备的很多信息。读者可以仿照例13来查看其他硬件信息。
例13 查看系统内存信息。
# prtconf | grep Memory
Memory size: 512Megabytes
14.2.2 改变系统信息
系统中有些提示信息是可以由管理员手工改动的,比如系统时间和系统用户登录时的提示等。下面具体介绍一些改变系统信息的方法。
1.改变系统日期和时间
命令介绍:
# date mmddHHMM[[cc]yy]
其中:
mm——月,使用2位数字表示。
dd——日,使用2位数字表示。
HH——小时。
MM——分钟。
cc——秒。
yy——年,使用2位数字表示。
例14 改变系统时间。
# date
Wed Mar 3 14:04:19 MST 2005
# date 0121173404
Thu Jan 21 17:34:34 MST 2005
2.改变系统登录信息
步骤:
(1)以超级用户或授权角色用户登录系统。
(2)编辑系统登录信息所在的文件/etc/motd.,并保存。
3.改变主机名
步骤:
(1)成为超级用户或授权角色用户。
(2)修改下列文件:
/etc/nodename
/etc/hostname.host-name
/etc/inet/hosts
(3)重新启动主机。
# init 6
4.如何增加和删除时区设置
上面已介绍改变系统的时区设置的方法,但是这是在有时区软件的情况下,如果操作系统中没有安装我们需要的时区的软件,怎么办?例15将介绍如何增添系统时区软件,例16将介绍如何删除时区软件。
例15 增添系统时区软件,并更新系统时区设置。
使用命令localeadm,并在其-a选项后面放想安装的locale的标志符,-d选项后面接安装程序包的位置。
# localeadm -a ceu -d /net/install/latest/Solaris/Product
locale/region name is ceu
Devices are /net/install/latest/Solaris/Product
One or more locales have been added.
To update the list of locales available at
例16 删除系统时区软件。
使用命令localeadm,-r选项后跟要删除的locale的标志符。
# localeadm -r ceu
locale/region name is ceu
Removing packages for Central Europe (ceu)
One or more locales have been removed.
To update the list of locales available
at the login screen’s "Options->Language" menu
系统磁盘是存放数据资料和应用程序的地方,它的安全与效率对管理员来说具有特殊的意义。本节将详细介绍磁盘空间的管理。查看磁盘空间的大小
查看磁盘空间的大小是系统管理员经常需要做的事情。Solaris操作系统提供了许多命令,以反映系统磁盘空间大小,由此可见查看系统空间大小的重要性。
磁盘空间信息的命令汇总:
命 令--描 述--帮 助
df--报告空闲磁盘块和文件的数量--df(1M)
du--子目录的占用空间大小--du(1)
find -size--查找指定目录下指定大小的文件--find(1)
ls -lh--显示当前目录下文件及大小--ls(1)
下面仅列举三个例子,读者应该很容易明白如何使用它们查看系统磁盘空间信息了。
例14-17 显示文件大小和磁盘空间。
$ df
/ (/dev/dsk/c0t0d0s0 ): 101294 blocks 105480 files
/devices (/devices ): 0 blocks 0 files
/system/contract (ctfs ): 0 blocks 2147483578 files
例14-18 以1024K的形式显示文件大小和磁盘空间。
$ df -h
Filesystem size used avail capacity Mounted on
/dev/dsk/c0t0d0s0 249M 200M 25M 90% /
/devices 0K 0K 0K 0% /devices
例14-19 以块的形式显示文件大小和磁盘空间。
$ df -t
/ (/dev/dsk/c0t0d0s0 ): 101294 blocks 105480 files
total: 509932 blocks 129024 files
/devices (/devices ): 0 blocks 0 files
total: 0 blocks 113 files
查看文件的大小
在了解磁盘空间大小之后,我们还需要了解文件的大小。只有这样才能合理地放置文件,有效地使用空间。
通常可以使用ls命令查看文件的大小:
ls
ls后加上-l参数,则列出当前目录的详细信息。在Solaris 10中,ls –l列出的文件的系统时间已经精确到微秒。
例14-20 列出文件的详细信息。
$ ls -l
total 148
drwxrwxr-x 5 adm adm 512 Nov 26 09:39 acct/
-rw------- 1 uucp bin 0 Nov 26 09:25 aculog
drwxr-xr-x 2 adm adm 512 Nov 26 09:25 exacct/
使用find命令可以在目录中检索达到一定标准的文件。
例14-21 在当前目录下列出大于400块的文件。
$ find . -size +400 -print
./Howto/howto.doc
./Howto/howto.doc.backup
./Howto/howtotest.doc
./Routine/routineBackupconcepts.doc
检查目录的大小
使用du命令来检查目录的大小。
命令介绍:
$ du [-as] [directory ...]
du命令是显示目录及目录下的子目录的总体大小。
-a参数是显示每个目录的大小和块数。
-s参数是显示专门目录大小是多少块数。
-h参数是显示每个目录的大小是多少KB。
例14-22 显示目录、子目录和文件的大小。
显示目录大小是多少块数:
$ du -s /var/adm /var/spool/
130 /var/adm
40 /var/spool/lp
显示目录的大小是多少KB:
$ du -h /usr/share/audio
796K /usr/share/audio/samples/au
797K /usr/share/audio/samples
798K /usr/share/audio
查找特定文件
在磁盘空间管理中,文件管理是非常重要的。一些旧的不再需要的文件,往往占用了宝贵的资源,找到并删除这些旧文件,是系统管理者必须做的。
1.如何按时间排序列出文件
使用ls –tl命令列出最新的文件,-t参数是要求输出按时间排序,时间最新的在最上边。
例14-23 按照时间顺序列出目录内文件。
$ ls -tl /var/adm
total 134
-rw------- 1 root root 315 Sep 24 14:00 sulog
-r--r--r-- 1 root other 350700 Sep 22 11:04 lastlog
-rw-r--r-- 1 root bin 4464 Sep 22 11:04 utmpx
-rw-r--r-- 1 adm adm 20088 Sep 22 11:04 wtmpx
2.如何找到并删除旧的或不用的文件
步骤:
(1)成为超级用户或授权角色用户。
(2)找到旧的或不用的文件。
命令介绍:
# find directory -type f[-atime +nnn][-mtime +nnn] -print > filename &
directory—在此目录下查找。
-atime +nnn—匹配所有在nnn天内访问过的文件。
-mtime +nnn—匹配所有在nnn天内修改过的文件。
filename—查找的结果列放在此文件中。
(3)删除:
# rm 'cat filename'
3.如何找到并删除core文件
core文件是系统软件故障信息记录文件。可用下面的方法来删除这些文件。
步骤:
(1)成为超级用户或授权角色用户。
(2)进入你想要查找core文件的目录。
(3)找到并删除core文件:
# find . -name core -exec rm {} \;
使用Quota管理磁盘空间
本节介绍如何使用Quota来限定用户使用磁盘空间的大小。
Quota概述
对磁盘空间资源进行必要的管理是系统管理员的工作之一。尤其当系统磁盘空间有限,而用户众多的时候,系统管理员就要想出办法,要么增加磁盘的数量,要么限定用户的使用空间。在不增加新的预算的情况下,限定用户空间就是惟一可行的方法。
Quota可以帮助系统管理员在指定目录限定用户使用磁盘空间的大小。
Quota在限制磁盘空间方面有两种措施:硬限制和软限制。硬限制就是系统严格限制用户可以使用空间的大小,不允许超额。软限制是允许用户超出限额一定的范围。当超出软限额时,Quota开始计时,在计时期间(默认时为一周,在/usr/include/sys/fs/ufs_quota.h文件中设置),用户释放空间到限额以下,计时复位清零。如果到期还没有释放空间,系统将不再允许该用户使用更多的空间。
Quota限制磁盘空间的方法也有两种,即分别对inode和block进行限制。因为系统给用户提供了两种资源:inode和block,分别用于存储文件和数据。只要用户所建立的文件超过他可以使用的inode数额,则即使这些文件都是空的,他再次建立文件的行为也将被限制。
设置Quota
Solaris操作系统支持Quota技术,意即设置Quota不需要另外安装其他第三方的工具就可以完成。
设置Quota步骤:
(1)编辑/etc/vfstab文件,在需要设置Quota的UFS的属性上加上rq标志。
(2)在该文件系统的根目录下建立名为quotas的文件,该文件的所有者应是root,其他用户不可对它进行写操作。
(3)使用edquota命令来在UFS的根目录下创建一个临时文件,这个文件的内容包括用户的使用限额。
(4)为多个用户设置edquota限额(可选)。
(5)使用quotacheck命令对限额的一致性进行检查。
(6)用quotaon命令来启动edquota服务。
例14-24 在磁盘c0t4d0s0的mount点/work下建立磁盘使用限额。
(1)成为超级用户或授权角色用户。
(2)编辑/etc/vfstab文件,加上:
/dev/dsk/c0t4d0s0 /dev/rdsk/c0t4d0s0 /export/home ufs 3 yes rq
(3)/export/home目录下,建立名为quotas的文件。
# touch quotas
# chmod 600 quotas
(4)使用edquota命令来建立用户的使用限额:
# edquota bob
系统生成:fs /export/home blocks (soft =10, hard =10) inodes (soft =10, hard =10)
其中,fs字段表明使用硬盘限额的文件系统,为/export/home;bob为用户名。修改soft和hard的数额就可以设定限额的大小。0是无限额设定;本次设定限额大小为10MB。
(5)以bob用户设置为模板,为多个用户设置edquota限额,mary和john也为用户名。
# edquota -p bob mary john
(6)使用quotacheck -va命令对限额的一致性进行检查。
# quotacheck -va
*** Checking quotas for /dev/rdsk/ c0t4d0s0 (/export/home)
(7)用quotaon命令来启动edquota服务:
#quotaon /export/home
检查Quota设置
Quota设置后,我们可以用下面的命令来检查设置是否成功。
# repquota -va
/dev/dsk/ c0t4d0s0 (/export/home):
Block limits File limits
User used soft hard timeleft used soft hard timeleft
Bob -- 1 10 10 0 0 10 10 0
Mary -- 3 10 10 0 0 10 10 0
John -- 0 10 1 0 0 10 10 0
磁盘块限制的定义:
used——当前已经使用的块数。
soft——soft-block限制数额。
hard——hard-block限制数额。
timeleft——剩余的可使用时间。.
文件限制定义:
used——已经使用的inode数量。
soft——soft-inode limit限制数额。
hard——hard-inode限制数额。
timeleft——剩余的可使用时间。
改变和删除Quota设置
下面简要介绍一些改变和删除Quota设置的命令。
(1)改变时间限额设置:
# edquota -t
(2)改变用户限额限额设置:
#edquota username
(3)检查用户限额设置是否正确:
#edquota -v [用户名]
(4)关闭quota服务:
#quotaoff [quota根目录]
系统资源的定时调用
Solaris操作系统支持系统资源的定时调用。本节将介绍系统管理员如何通过相关命令和设置,按照事先定好的时间调用系统资源。
系统资源的循环定时调用
可以使用crontab将系统设定在每天、每周和每月的某个时刻自动运行某个命令或者应用程序,实现系统资源的循环定时调用。在不需要人工干预的情况下,还可以设定好将系统执行信息记录在某个文件之中,我们定期查看这些文件,以了解系统执行情况。
1.crontab命令的使用
命令介绍:
crontab
参数:
-e:执行文字编辑器来设定时程表,内定的文字编辑器是VI。
-r:删除目前的时程表。
-l:列出目前的时程表。
时程表的格式如下:
f1 f2 f3 f4 f5 program
具体解释如下:
其中f1是表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个星期中的第几天。program表示要执行的程序。
当f1为*时表示每分钟都要执行program,f2为*时表示每小时都要执行程序,其余类推。
当f1为a~b时表示从第a分钟到第b分钟这段时间内要执行,f2为a~b时表示从第a到第b小时都要执行,其余类推。
当f1为*/n时表示每n分钟个时间间隔执行一次,f2为*/n表示每n小时个时间间隔执行一次,其余类推。
当f1为a, b, c,…时表示第a, b, c,…分钟要执行,f2为a, b, c,…时表示第a, b, c…个小时要执行,其余类推。
使用者也可以将所有的设定先存放在档案file中,用crontab file的方式来设定时程表。
例14-25 使用crontab实现定时执行。
每月每天每小时的第0分钟执行一次/bin/ls:
0 * * * * /bin/ls
在12月内,每天早上6点到12点钟之间,每隔20分钟执行一次/usr/bin/backup:
0/20 6-12 * 12 * /usr/bin/backup
周一到周五每天下午5:00寄一封信给:
0 17 * * 1-5 mail -s "hi" < /tmp/maildata
每月每天的午夜0点20分,2点20分,4点20分……执行echo "haha":
20 0-23/2 * * * echo "haha"
2.如何控制用户使用crontab命令
控制使用crontab命令的文件存在/etc/cron.d目录下,即cron.deny和cron.allow两个文件。这两个文件与用户名相联系,一个用户名在文件中列为一行。控制文件是这样工作的:
如果cron.allow文件存在,只有列在文件中的用户才能创建、编辑、显示和删除crontab文件。
如果cron.allow不存在,除列在cron.deny文件中用户名的用户外,所有用户都能创建、编辑、显示和删除crontab文件。
如果cron.allow和cron.deny文件都不存在,只有超级用户才能使用crontab命令。
cron.deny文件系统初始化安装时就已经存在,cron.deny默认的内容如下:
$ cat /etc/cron.d/cron.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess
列在cron.deny中的用户都不能使用crontab命令。你可以编辑文件以添加或删除用户名。
而cron.allow文件在默认情况下是不存在的,必须由用户创建。所以,当系统刚安装好后,除了列在cron.deny用户外,其他所有用户都可以使用crontab命令。如果你建立cron.allow文件,那么就只有列在这个文件中的用户可以使用crontab命令。
系统资源的一次性定时调用
使用at命令,可以使系统在以后的某个时刻执行一项命令或程序,从而实现系统资源的调用。
1.at命令的使用
命令介绍:
$ at [-m] time [date]
参数:
-m执行完后给执行用户邮件通知。
time执行命令的时间,以小时或分钟表示。
data执行命令的时间,以天数表示。
例14-26 使用at命令实现定期执行任务。
(1)创建定期执行的任务。
在下午19:30分执行删除/home/jones/*.backup文件的任务:
$ at -m 1930
at> rm /home/jones/*.backup
at> Press Control-D
job 897355800.a at Thu Jul 12 19:30:00 2004
(2)显示定期执行任务队列。
使用atq命令可以查看任务队列:
$ atq
Rank Execution Date Owner Job Queue Job Name
1st Jul 12, 2004 19:30 jones 897355800.a a stdin
2nd Jul 14, 2004 23:45 jones 897543900.a a stdin
3rd Jul 17, 2004 04:00 jones 897732000.a a stdin
(3)显示定期执行的任务。
$ at -l
897543900.a Sat Jul 14 23:45:00 2004
897355800.a Thu Jul 12 19:30:00 2004
897732000.a Tue Jul 17 04:00:00 2004
(4)删除定期执行的任务。
先显示定期执行任务,再用at –r命令来删除:
$ at -l
897543900.a Sat Jul 14 23:45:00 2003
897355800.a Thu Jul 12 19:30:00 2003
897732000.a Tue Jul 17 04:00:00 2003
$ at -r 897732000.a
$ at -l 897732000.a
at: 858142000.a: No such file or directory
2.如何控制用户使用at命令
通过/etc/cron.d目录下的at.deny文件,我们可以控制使用at命令的用户。这个文件与用户名相关,一个用户名在文件中列为一行。凡是列入这个文件的用户,都禁止使用at命令。
系统安装好后,at.deny就已经默认存在了。它包含下列用户名:
daemon
bin
smtp
nuucp
listen
nobody
noaccess
超级用户可以编辑at.deny文件,以增加和删除用户。