来自 一锅粥 的好文

from:
http://n.loopx.cn/category/technology/page/10

 

启动流程
========
   Linux系统主要通过以下步骤启动:
   1、读取MBR的信息,启动Boot Manager
       Windows使用NTLDR作为Boot Manager,如果您的系统中安装多个版本的Windows,您就需要在NTLDR中选择您要进入的系统。
       Linux通常使用功能强大,配置灵活的GRUB作为Boot Manager,我们将在启动管理章节中向您介绍它的使用方式。
   2、加载系统内核,启动init进程
       init进程是Linux的根进程,所有的系统进程都是它的子进程。
   3、init进程读取“/etc/inittab”文件中的信息,并进入预设的运行级别,按顺序运行该运行级别对应文件夹下的脚本。脚本通常以“start”参数启动,并指向一个系统中的程序。
       通常情况下,“/etc/rcS.d/”目录下的启动脚本首先被执行,然后是“/etc/rcN.d/”目录。例如您设定的运行级别为3,那么它对应的启动目录为“/etc/rc3.d/”。
   4、根据“/etc/rcS.d/”文件夹中对应的脚本启动Xwindow服务器“xorg”
       Xwindow为Linux下的图形用户界面系统。
   5、启动登录管理器,等待用户登录
       Ubuntu系统默认使用GDM作为登录管理器,您在登录管理器界面中输入用户名和密码后,便可以登录系统。(您可以在“/etc/rc3.d/”文件夹中找到一个名为“S13gdm”的链接)
   
更改运行级别
————
   在“/etc/inittab”文件中找到如下内容:   
       # The default runlevel.
       id:2:initdefault:
      
   这一行中的数字2,为系统的运行级别,默认的运行级别涵义如下:
       0   关机
       1   单用户维护模式
       2~5   多用户模式
       6   重启

服务管理
========

更改启动服务
————
   在运行级别对应的文件夹中,您可以看到许多文件名以“S##”和“K##”起始的启动脚本链接。
   例如:
       /etc/rcS.d/S35mountall.sh   挂载文件系统
       /etc/rcS.d/S40networking   启用网络支持
       /etc/rc2.d/S13gdm      启动登录管理器
       /etc/rc2.d/S20makedev   创建设备文件
       /etc/rc2.d/S23xinetd   启动超级进程
   init进程将以“start”为参数,按文件名顺序执行所有以“S##”起始的脚本。脚本名称中的数字越小,它将被越早执行。例如在“/etc/rc2.d/”文件夹中,“S13gdm”文件名中的数字小于“S23xinetd”,“S13gdm”将比“S23xinetd”先执行。
   
   如果一个脚本链接,以“K##”起始,表示它将以“stop”参数被执行。如果相应服务没有启动,则不执行该脚本。
   例如:
       /etc/rc2.d/K20powernowd   针对某种硬件的电源管理支持
  
   如果您想禁止某一服务在启动时自动运行,您可以将相应运行级别中的脚本由“S##xxx”重命名为“K##xxx”。

  
手动控制服务
————

   您也可以手动运行带有以下参数的启动脚本,来控制系统服务。
   start      启动   
   stop      停止
   restart      重启
   例如:
   /etc/rc2.d/K20powernowd start
   
   有时您并不清楚当前运行级别,该运行级别下未必有相应脚本;而且此类脚本的前三位字符并不固定,不便于记忆。这时,您可以直接使用“/etc/init.d/”文件夹中的启动脚本(“/etc/rcX.d/”中的启动脚本链接到“/etc/init.d/”文件夹下相应脚本),这也是我们向您推荐的方式。
   例如:
   /etc/init.d/powernowd start

Tips:以上命令的位置并没有包含在环境变量的搜索路径中,所以要输入完整路径。


常用系统服务
============
   acpi-support   高级电源管理支持
   acpid       acpi守护程序.这两个用于电源管理,非常重要
   alsa      声音子系统
   alsa-utils   
   anacron      cron的子系统,将系统关闭期间的计划任务,在下一次系统运行时执行。
   apmd      acpi的扩展
   atd      类似于cron的任务调度系统。建议关闭
   binfmt-support   核心支持其他二进制的文件格式。建议开启
   bluez-utiles   蓝牙设备支持
   bootlogd   启动日志。开启它
   cron      任务调度系统,建议开启
   cupsys      打印机子系统。
   dbus      消息总线系统(message bus system)。非常重要
   dns-clean   使用拨号连接时,清除dns信息。
   evms      企业卷管理系统(Enterprise Volumn Management system)
   fetchmail   邮件用户代理,用于收取邮件
   gdm      gnome登录和桌面管理器。
   gdomap      
   gpm      终端中的鼠标支持。
   halt      别动它。
   hdparm      调整硬盘的脚本,配置文件为“/etc/hdparm.conf”。
   hibernate   系统休眠
   hotkey-setup   笔记本功能键支持。支持类型包括: HP, Acer, ASUS, Sony, Dell, 和IBM。
   hotplug and hotplug-net   即插即用支持,比较复杂,建议不要动它。
   hplip          HP打印机和图形子系统
   ifrename   网络接口重命名脚本。如果您有十块网卡,您应该开启它
   inetd      在文件“/etc/inetd.conf”中,注释掉所有你不需要的服务。如果该文件不包含任何服务,那关闭它是很安全的。
   klogd      重要。
   linux-restricted-modules-common   受限模块支持。“/lib/linux-restricted-modules/”文件夹中的模块为受限模块。例如某些驱动程序,如果您没有使用受限模块,就不需要开启它。
   lvm      逻辑卷管理系统支持。
   makedev      创建设备文件,非常重要。
   mdamd      磁盘阵列
   module-init-tools   从/etc/modules加载扩展模块,建议开启。
   networking   网络支持。按“/etc/network/interfaces”文件预设激活网络,非常重要。
   ntpdate      时间同步服务,建议关闭。
   pcmcia      pcmcia设备支持。
   powernowd   移动CPU节能支持
   ppp and ppp-dns   拨号连接
   readahead   预加载库文件。
   reboot      别动它。
   resolvconf   自动配置DNS
   rmnologin   清除nologin
   rsync      rsync守护程序
   sendsigs   在重启和关机期间发送信号
   single      激活单用户模式
   ssh      ssh守护程序。建议开启
   stop-bootlogd   在2,3,4,5运行级别中停止bootlogd服务
   sudo      检查sudo状态。重要
   sysklogd   系统日志
   udev & udev-mab 用户空间dev文件系统(userspace dev filesystem)。重要
   umountfs   卸载文件系统
   urandom      随机数生成器
   usplash      开机画面支持
   vbesave      显卡BIOS配置工具。保存显卡的状态
   xorg-common   设置X服务ICE socket。
   adjtimex   调整核心时钟的工具
   dirmngr      证书列表管理工具,和gnupg一起工作。
   hwtools      irqs优化工具
   libpam-devperm   系统崩溃之后,用于修理设备文件许可的守护程序。
   lm-sensors   板载传感器支持
   mdadm-raid   磁盘陈列管理器
   screen-cleanup   清除开机屏幕的脚本
   xinetd      管理其他守护进程的一个inetd超级守护程序

重要配置文件
============
   !无论任何情况下,在修改配置文件之前,请您先备份它!
   建议您使用这个命令:“sudo cp xxx xxx_`date +%y%m%d_%H:%M`”。
   当然这很麻烦,您可以新建一个名为“bak”的文件,内容如下:
      #!/bin/bash
      sudo cp $1  $1_`date +%y%m%d_%H:%M`
   把它放在您能够记住的目录下,比如“/home”,执行命令“sh /home/bak xxx”,就可以将当前文件夹下的文件“xxx”另存为“xxx_yymmdd_HH:MM”的格式了


全局配置文件
————
   系统初始化
   /etc/inittab      运行级别、控制台数量
   /etc/timezone      时区
   /etc/inetd.conf      超级进程
   文件系统
   /etc/fstab      开机时挂载的文件系统
   /etc/mtab      当前挂载的文件系统
   用户系统
   /etc/passwd      用户信息
   /etc/shadow      用户密码
   /etc/group      群组信息
   /etc/gshadow      群组密码
   /etc/sudoers      Sudoer列表(请使用“visudo”命令修改此文件,而不要直接编辑)
   Shell
   /etc/shell      可用Shell列表
   /etc/inputrc      ReadLine控件设定
   /etc/profile      用户首选项
   /etc/bash.bashrc   bash配置文件
   系统环境
   /etc/environment   环境变量
   /etc/updatedb.conf   文件检索数据库配置信息
   /etc/issue      发行信息
   /etc/issue.net
   /etc/screenrc      屏幕设定
   网络
   /etc/iftab      网卡MAC地址绑定
   /etc/hosts      主机列表
   /etc/hostname      主机名
   /etc/resolv.conf   域名解析服务器地址
   /etc/network/interfaces   网卡配置文件
   
用户配置文件
————
   “/etc/”目录下的所有文件,只有root用户才有修改权限。应用软件的全局配置文件,普通用户也不能够修改,如果您想配置软件,以适应您的需求,您可以修改它的用户配置文件。

   用户配置文件通常为全局配置文件的同名隐藏文件,放在您的$HOME目录下,例如:
   /etc/inputrc      /home/user/.inputrc
   /etc/vim/vimrc      /home/user/.vim/vimrc

   也有少数例外,通常是系统程序
   /etc/bash.bashrc   /home/user/.bashrc

By 木頭 on | 6.技

Ubuntu系统目录结构

 

 /   根目录
    │
    ├boot/      启动文件。所有与系统启动有关的文件都保存在这里
    │    └grub/   Grub引导器相关的文件
    │
    ├dev/       设备文件
    ├proc/      内核与进程镜像
    │
    ├mnt/      临时挂载
    ├media/   挂载媒体设备
    │
    ├root/      root用户的$HOME目录
    ├home/         
    │    ├user/   普通用户的$HOME目录
    │    └…/
    │
    ├bin/      系统程序
    ├sbin/      管理员系统程序
    ├lib/      系统程序库文件
    ├etc/      系统程序和大部分应用程序的全局配置文件
    │   ├init.d/   SystemV风格的启动脚本
    │   ├rcX.d/   启动脚本的链接,定义运行级别
    │   ├network/   网络配置文件
    │   ├X11/      图形界面配置文件
    │
    ├usr/      
    │   ├bin/      应用程序
    │   ├sbin/   管理员应用程序
    │   ├lib/      应用程序库文件
    │   ├share/   应用程序资源文件
    │   ├src/      应用程序源代码
    │   ├local/      
    │   │     ├soft/      用户程序      
    │   │     └…/      通常使用单独文件夹
    │   ├X11R6/   图形界面系统
    │
    ├var/         动态数据
    │
    ├temp/         临时文件
    ├lost+found/   磁盘修复文件

    ├opt 这是给主机额外安装软件所摆放的目录。

 

 

By 木頭 on | 6.技

linux一定要的分区

Swap:格式为swap,大小为物理内存的2倍,如果你内存很大,一倍大小也可以。

/根目录:安装系统文件安装软件等都放在根目录下,如果硬盘够大尽量多分一些给它。

/home:用户目录,在使用过程中该目录中的文件会与日俱增,因此尽量为之分配更多的空间,如果未来会加大硬盘空间的话,最好挂载在这个目录下。

By 木頭 on | 6.技

任务调度的crond

 

service crond

crond linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:
1
、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2
、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

 

CrontabUNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:

 

文件

 

 

含义

 

 

/etc/cron.deny

 

 

该文件中所列的用户不允许使用Crontab命令

 

 

/etc/cron.allow

 

 

该文件中所列的用户允许使用Crontab命令

 

 

/var/spool/cron/

 

 

是所有用户的crontab文件

 

 

/var/spool/cron/crontabs

/var/spool/cron/crontabs


Crontab
命令的格式为:crontab –l|-r|-e|-i [username],其参数含义如表一:

 

参数名称

 

 

含义

 

 

示例

 

 

-l

 

 

显示用户的Crontab文件的内容

 

 

crontabl –l

 

 

-i

 

 

删除用户的Crontab文件前给提示

 

 

crontabl -ri

 

 

-r

 

 

Crontab目录中删除用户的Crontab文件

 

 

crontabl -r

 

 

-e

 

 

编辑用户的Crontab文件

 

 

crontabl -e

 

 


用户所建立的Crontab文件存于/var/spool/cron中,其文件名与用户名一致。
它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段,
格式如下:* * * * * <command>
其时间段的含义如表二:

 

 

 

含义

 

 

取值范围

 

 

第一段

 

 

代表分钟

 

 

0—59

 

 

第二段

 

 

代表小时

 

 

0—23

 

 

第三段

 

 

代表日期

 

 

1—31

 

 

第四段

 

 

代表月份

 

 

1—12

 

 

第五段

 

 

代表星期几,0代表星期日

 

 

0—6

 

 

例:如果用户的Crontab文件的内容是:29 19 * * * echo its dinner time,则系统每天的19:29显示‘its dinner time’

示例(创建一个cron全过程,每分钟都会在test.txt里输入当前时间):

 

1. 以普通用户登录linux系统(我用的是CentOS4.1)

 

2. $crontab –e
说明:系统默认的编辑器是VIM,如果不是请加上以下shell:
$EDITOR=vi
$export EDITOR

 

3. 输入”*/1 * * * * date >> $HOME/test.txt”,save and exit VIM

 

4. $su root

 

5. $cd /etc/init.d

 

6. ./crond restart

 

下面看看看几个具体的例子:
0 */2 * * * /sbin/service httpd restart
意思是每两个小时重启一次apache

 

● 50 7 * * * /sbin/service sshd start 意思是每天750开启ssh服务

 

● 50 22 * * * /sbin/service sshd stop 意思是每天2250关闭ssh服务

 

● 0 0 1,15 * * fsck /home 每月1号和15号检查/home 磁盘

 

● 1 * * * * /home/bruce/backup 每小时的第一分执行 /home/bruce/backup这个文件

 

● 00 03 * * 1-5 find /home “*.xxx” -mtime +4 -exec rm {} /; 每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
● 30 6 */10 * * ls 意思是每月的1、11、21、31日是的6:30执行一次ls命令

 
 
IMB关于crond的说明:
 
 
系统管理员需要在系统负载低的午夜运行作业,或者需要每天或每月运行作业,同时又不愿意牺牲睡眠时间或假期。调度任务的其他原因包括自动执行日常任务或者确保每次都以相同的方式处理任务。本文帮助您使用 cronat 功能调度作业定期运行或在指定的时间运行一次。

Linux® 和 UNIX® 系统允许调度任务在以后执行一次,或者重复运行。本文是从 developerWorks 教程 “LPI 102 考试准备:管理任务” 摘录的,讲解如何调度作业定期运行,或在指定的时间运行一次。

在 Linux 系统上,许多管理任务必须频繁地定期执行。这些任务包括轮转日志文件以避免装满文件系统、备份数据和连接时间服务器来执行系统时间同步。上面提到的教程更详细地介绍了这些管理任务。在本文中,学习 Linux 中提供的调度机制,包括 cronanacron 设施以及 crontabat 命令。即使系统常常关机,anacron 也可以帮助调度作业。

以一定的时间间隔运行作业

以一定的时间间隔运行作业需要使用 cron 设施进行管理,它由 crond 守护进程和一组表(描述执行哪些操作和采用什么样的频率)组成。这个守护进程每分钟唤醒一次,并通过检查 crontab 判断需要做什么。用户使用 crontab 命令管理 crontab。crond 守护进程常常是在系统启动时由 init 进程启动的。

为了简单,假设希望定期运行清单 1 所示的命令。这个命令实际上只报告日期和时间,其他什么事都不做,但是它可以说明如何使用 crontab 设置 cron 作业,而且还可以通过输出看到作业运行的时间。设置 crontab 条目需要一个包含转义的 shell 元字符的字符串,所以适合于简单的命令和参数。在这个示例中,将从脚本 /home/ian/mycrontab.sh 运行 echo 命令,这个脚本不需要参数。 这可以减少处理转义字符的工作。

清单 1. 一个简单的命令示例

                [ian@lyrebird ~]$ cat mycrontest.sh#!/bin/bash echo “It is now $(date +%T) on $(date +%A)”[ian@lyrebird ~]$ ./mycrontest.shIt is now 18:37:42 on Friday

创建 crontab

使用 crontab 命令和 -e(表示 “edit”)选项创建 crontab。这会打开 vi 编辑器,除非在 EDITOR 或 VISUAL 环境变量中指定了另一种编辑器。

每个 crontab 条目包含六个字段:

  1. 分钟
  2. 小时
  3. 星期
  4. sh 执行的字符串

分钟和小时的范围分别是 0-59 和 0-12,日和月的范围分别是 1-31 和 1-12。星期的范围是 0-6,0 表示星期日。星期也可以指定为 sun、mon、tue 等等。第 6 个字段包含前 5 个字段之后的所有内容,它是要传递给 sh 的字符串。百分号(%)将转换为空行,所以如果要使用 % 或其他任何特殊字符,就要在前面加上反斜线(/)。第一个 % 之前的一行传递给 shell,这个 % 之后的所有行都作为标准输入传递。

各个与时间相关的字段可以指定一个单独的值、值的范围(比如 0-10 或 sun-wed)或者以逗号分隔的单独值和范围列表。清单 2 给出一个 crontab 条目示例。


清单 2. 一个简单的 crontab 示例

                0,20,40 22-23 * 7 fri-sat /home/ian/mycrontest.sh

在这个示例中,我们的命令在 7 月的每个星期五和星期六晚上 10 点到午夜之间的第 0、20、40 分钟(每 20 分钟)执行。关于指定时间的其他方式的细节,参见 crontab(5) 的手册页。

输出

您可能想知道对来自命令的输出会如何处理。为使用 cron 而设计的大多数命令会使用 syslog 在日志中记录输出(参见教程 “LPI 102 考试准备:管理任务” 中的讨论)。但是,定向到 stdout 的输出会通过电子邮件发送给用户。清单 3 给出我们的命令示例可能产生的输出。


清单 3. 通过电子邮件发送的 cron 输出

                From ian@lyrebird.raleigh.ibm.com  Fri Jul  6 23:00:02 2007Date: Fri, 6 Jul 2007 23:00:01 -0400From: root@lyrebird.raleigh.ibm.com (Cron Daemon)To: ian@lyrebird.raleigh.ibm.comSubject: Cron <ian@lyrebird> /home/ian/mycrontest.shContent-Type: text/plain; charset=UTF-8Auto-Submitted: auto-generatedX-Cron-Env: <SHELL=/bin/sh>X-Cron-Env: <HOME=/home/ian>X-Cron-Env: <PATH=/usr/bin:/bin>X-Cron-Env: <LOGNAME=ian>X-Cron-Env: <USER=ian>It is now 23:00:01 on Friday

crontab 存储在哪里?

suid 程序

suid 程序以程序文件的所有者的权限运行,而不是采用运行程序的用户的权限。关于 suid 的更多信息,参见教程 “LPI 101 考试准备:设备、Linux 文件系统和 Filesystem Hierarchy Standard”;关于 passwd 命令的更多信息,参见教程 “LPI 102 考试准备:管理任务”。

crontab 命令创建的 crontab 存储在 /etc/spool/cron 下面的一个子目录中,这个子目录与创建 crontab 的用户同名,所以上面的 crontab 存储在 /etc/spool/cron/ian 中。因此,与 passwd 命令一样,crontab 命令是一个用根权限运行的 suid 程序。

/etc/crontab

除了 /var/spool/cron 中的用户 crontab 文件之外,cron 还会检查 /etc/crontab 文件和 /etc/cron.d 目录中的文件。在这些系统 crontab 中,在第五个时间字段(星期)和命令之间增加了一个字段。这个字段指定哪个用户应该运行这个命令,一般情况下是根用户。清单 4 给出一个 /etc/crontab 文件示例。


清单 4. /etc/crontab

                SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# run-parts01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.daily22 4 * * 0 root run-parts /etc/cron.weekly42 4 1 * * root run-parts /etc/cron.monthly      

在这个示例中,真正的工作由 run-parts 命令执行,它运行 /etc/cron.hourly、/etc/cron.daily 等目录中的脚本;/etc/crontab 仅仅控制执行作业的时间。注意,这里的所有命令都作为根用户运行。还要注意,crontab 可以包含 shell 变量赋值,这些赋值会在运行命令之前执行。

anacron

cron 适合那些连续运行的系统。对于那些常常不开机的系统,比如笔记本计算机,可以使用另一个实用程序 anacron(表示 “anachronistic cron”)调度每日、每周或每月执行的作业。anacron 不处理每小时执行的作业。

anacron 在 /var/spool/anacron 中保留时间戳文件,记录作业运行的时间。当 anacron 运行时,它检查自作业上一次运行以来是否已经经过了所需的天数,如果需要,就运行作业。anacron 的作业表存储在 /etc/anacrontab 中,文件格式与 /etc/crontab 略有不同。与 /etc/crontab 一样,/etc/anacrontab 可以包含环境设置。每个作业有四个字段:

  1. 周期
  2. 延迟
  3. 作业标识符
  4. 命令

周期是天数,但是可以指定为 @monthly,这确保作业每个月只运行一次(无论这个月中有多少天)。延迟是在作业符合运行条件之后,到实际启动它之前等待的分钟数。可以使用这个设置防止在系统启动时集中执行作业。作业标识符可以包含除了斜线(/)之外的所有非空白字符。

/etc/crontab 和 /etc/anacrontab 都通过直接编辑进行更新。不使用 crontab 命令更新这些文件或 /etc/cron.d 目录中的文件。





回页首

在指定的时间运行作业

有时候,需要只运行作业一次而不是定期运行。为此,应该使用 at 命令。要运行的命令是从 -f 选项指定的文件读取的,如果没有使用 -f,那么从 stdin 读取。-m 选项向用户发送邮件,即使命令没有 stdout。-v 选项显示运行作业的时间。这个时间也显示在输出中。

清单 5 给出一个运行 mycrontest.sh 脚本的示例。清单 6 显示在运行作业之后通过邮件发送给用户的输出。注意,这里的输出比对应的 cron 作业输出要简单一些。


清单 5. 使用 at 命令

                [ian@lyrebird ~]$ at -f mycrontest.sh -v 10:25Sat Jul  7 10:25:00 2007job 5 at Sat Jul  7 10:25:00 2007


清单 6. 来自 at 的作业输出
                From ian@lyrebird.raleigh.ibm.com  Sat Jul  7 10:25:00 2007Date: Sat, 7 Jul 2007 10:25:00 -0400From: Ian Shields <ian@lyrebird.raleigh.ibm.com>Subject: Output from your job        5To: ian@lyrebird.raleigh.ibm.comIt is now 10:25:00 on Saturday

时间的设置可以非常复杂。清单 7 给出几个示例。参见 at 的手册页、/usr/share/doc/at/timespec 文件或 /usr/share/doc/at-3.1.10/timespec 这样的文件(这个示例中的 3.1.10 是 at 包的版本号)。


清单 7. at 命令使用的时间值

                [ian@lyrebird ~]$ at -f mycrontest.sh  10pm tomorrowjob 14 at Sun Jul  8 22:00:00 2007[ian@lyrebird ~]$ at -f mycrontest.sh 2:00 tuesdayjob 15 at Tue Jul 10 02:00:00 2007[ian@lyrebird ~]$ at -f mycrontest.sh 2:00 july 11job 16 at Wed Jul 11 02:00:00 2007[ian@lyrebird ~]$ at -f mycrontest.sh 2:00 next weekjob 17 at Sat Jul 14 02:00:00 2007

nice 值

nice 值表示一个作业对于其他用户的优先程度。关于 nicerenice 命令的更多信息,参见教程 “LPI 101 考试准备:GNU 和 UNIX 命令”。

at 命令还有一个 -q 选项。随着队列的增长,作业的 nice 值也会增长。 还有一个 batch 命令,它与 at 命令相似,但是作业只在系统负载足够低时运行。这些特性的细节参见手册页。





回页首

管理调度的作业

列出调度的作业

可以管理 cron 和 at 作业。使用 crontab 命令和 -l 选项列出 crontab,使用 atq 命令显示用 at 命令加入队列中的作业,见清单 8。


清单 8. 显示调度的作业

                [ian@lyrebird ~]$ crontab -l0,20,40 22-23 * 7 fri-sat /home/ian/mycrontest.sh[ian@lyrebird ~]$ atq16      Wed Jul 11 02:00:00 2007 a ian17      Sat Jul 14 02:00:00 2007 a ian14      Sun Jul  8 22:00:00 2007 a ian15      Tue Jul 10 02:00:00 2007 a ian

如果希望查看 at 调度执行的实际命令,那么可以使用 at 命令并加上 -c 选项和作业号。您会注意到,在发出 at 命令时生效的大多数环境设置会随调度的作业一起保存。清单 9 给出清单 7 和清单 8 中作业 15 的部分输出。


清单 9. 使用 at -c 并加上作业号

                #!/bin/sh# atrun uid=500 gid=500# mail ian 0umask 2HOSTNAME=lyrebird.raleigh.ibm.com; export HOSTNAMESHELL=/bin/bash; export SHELLHISTSIZE=1000; export HISTSIZESSH_CLIENT=9.67.219.151/ 3210/ 22; export SSH_CLIENTSSH_TTY=/dev/pts/5; export SSH_TTYUSER=ian; export USER …HOME=/home/ian; export HOMELOGNAME=ian; export LOGNAME …cd /home/ian || {         echo ‘Execution directory inaccessible’ >&2         exit 1}${SHELL:-/bin/sh} << `(dd if=/dev/urandom count=200 bs=1 /   2>/dev/null|LC_ALL=C tr -d -c ‘[:alnum:]‘)`#!/bin/bash echo “It is now $(date +%T) on $(date +%A)”

注意,我们脚本文件的内容已经复制在一个 here-document 中,这个 here-document 将由 SHELL 变量指定的 shell 执行(如果没有设置 SHELL 变量,就使用 /bin/sh)。关于 here-document 的信息参见教程 “LPI 101 考试准备,主题 103:GNU 和 UNIX 命令”。

删除调度的作业

可以使用 cron 命令和 -r 选项删除所有调度的 cron 作业,见清单 10。


清单 10. 显示并删除 cron 作业

                [ian@lyrebird ~]$ crontab -l0,20,40 22-23 * 7 fri-sat /home/ian/mycrontest.sh[ian@lyrebird ~]$ crontab -r[ian@lyrebird ~]$ crontab -lno crontab for ian

要删除系统 cron 或 anacron 作业,应该编辑 /etc/crontab、/etc/anacrontab 或者编辑或删除 /etc/cron.d 目录中的文件。

可以使用 atrm 命令加作业号删除用 at 命令调度的一个或多个作业。多个作业应该用空白分隔。清单 11 给出一个示例。


清单 11. 用 atq 和 atrm 显示并删除作业

                [ian@lyrebird ~]$ atq16      Wed Jul 11 02:00:00 2007 a ian17      Sat Jul 14 02:00:00 2007 a ian14      Sun Jul  8 22:00:00 2007 a ian15      Tue Jul 10 02:00:00 2007 a ian[ian@lyrebird ~]$ atrm 16 14 15[ian@lyrebird ~]$ atq17      Sat Jul 14 02:00:00 2007 a ian





回页首

配置用户对作业调度的访问

如果文件 /etc/cron.allow 存在,那么非根用户必须在其中列出,才能使用 crontab 和 cron 设施。如果 /etc/cron.allow 不存在,但是 /etc/cron.deny 存在,那么其中列出的非根用户不能使用 crontab 或 cron 设施。如果这两个文件都不存在,那么只允许超级用户使用这个命令。空的 /etc/cron.deny 文件允许所有用户使用 cron 设施,这是默认情况。

/etc/at.allow 和 /etc/at.deny 文件对 at 设施起相似的作用。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

By 木頭 on 2008年09月9日 | 6.技

日志文件系统

     由于具有很好的文件存取性能,ext2 文件系统自从 1993 年发布之后,已经迅速得到了用户的青睐,成为很多 Linux 发行版中缺省的文件系统,原因之一在于 ext2 文件系统采用了文件系统缓存的概念,可以加速文件的读写速度。然而,如果文件系统缓存中的数据尚未写入磁盘,机器就发生了掉电等意外状况,就会造成磁盘数据不一致的状态,这会损坏磁盘数据的完整性(文件数据与元数据不一致),严重情况下甚至会造成文件系统的崩溃。

为了确保数据的完整性,在系统引导时,会自动检查文件系统上次是否是正常卸载的。如果是非正常卸载,或者已经使用到一定的次数,就会自动运行 fsck 之类的程序强制进行一致性检查(具体例子请参看本系列文章的第 2 部分),并修复存在问题的地方,使 ext2 文件系统恢复到新的一致状态。

     然而,随着硬盘技术的发展,磁盘容量变得越来越大,对磁盘进行一致性检查可能会占用很长时间,这对于一些关键应用来说是不可忍受的;于是日志文件系统(Journal File System)的概念也就应运而生了。

所谓日志文件系统,就是在文件系统中借用了数据库中“事务”(transaction)的概念,将文件的更新操作变成原子操作。具体来说,就是在修改文件系统内容的同时(或之前),将修改变化记录到日志中,这样就可以在意外发生的情况下,就可以根据日志将文件系统恢复到一致状态。这些操作完全可以在重新挂载文件系统时来完成,因此在重新启动机器时,并不需要对文件系统再进行一致性检查,这样可以大大提高系统的可用程度。

     Linux 系统中目前已经出现了很多日志文件系统,例如 SGI 开发的 XFS、IBM 开发的 JFS 和 ReiserFS 以及 ext3 等。与其他日志文件系统相比,ext3 最大的特性在于它完全兼容 ext2 文件系统。用户可以在 ext2 和 ext3 文件系统之间无缝地进行变换,二者在磁盘上采用完全相同的的数据格式进行存储,因此大部分支持 ext2 文件系统的工具也都可以在 ext3 文件系统上使用。甚至为 ext2 开发的很多特性也都可以非常平滑地移植到 ext3 文件系统上来。ext3 文件系统的另外一个特性在于它提供了 3 种日志模式,可以满足各种不同用户的要求:

  • data=journal:这会记录对所有文件系统数据和元数据的修改。这种模式可以将数据丢失的风险降至最低,但是速度也最慢。
  • data=ordered:仅仅记录对文件系统元数据的修改,但是在修改相关文件系统元数据之前,需要将文件数据同步到磁盘上。
  • data=writeback:仅仅记录对文件系统元数据的修改,对文件数据的修改按照标准文件系统的写操作过程进行处理。这种模式速度最快。

     在重新挂载文件系统时,系统会自动检查日志项,将尚未提交到磁盘上的操作重新写入磁盘,从而确保文件系统的状态与最后一次操作的结果保持一致。

By 木頭 on | 6.技

php.ini session

 

下面是session的说明:

[Session]
session.save_handler = files ; 用于保存/取回数据的控制方式
session.save_path = C:/win/temp ; 在 save_handler 设为文件时传给控制器的参数,
; 这是数据文件将保存的路径。
session.use_cookies = 1 ; 是否使用cookies
session.name = PHPSESSID
; 用在cookie里的session的名字
session.auto_start = 0 ; 在请求启动时初始化session
session.cookie_lifetime = 0 ; 为按秒记的cookie的保存时间,
; 或为0时,直到浏览器被重启
session.cookie_path = / ; cookie的有效路径
session.cookie_domain = ; cookie的有效域
session.serialize_handler = php ; 用于连接数据的控制器
; php是 PHP 的标准控制器。
session.gc_probability = 1 ; 按百分比的’garbage collection(碎片整理)’进程
; 在每次 session 初始化的时候开始的可能性。
session.gc_maxlifetime = 1440 ; 在这里数字所指的秒数后,保存的数据将被视为
; ‘碎片(garbage)’并由gc 进程清理掉。
session的有效期
session.referer_check = ; 检查 HTTP引用以使额外包含于URLs中的ids无效
session.entropy_length = 0 ; 从文件中读取多少字节
session.entropy_file = ; 指定这里建立 session id
; session.entropy_length = 16
; session.entropy_file = /dev/urandom
session.cache_limiter = nocache ; 设为{nocache,private,public},以决定 HTTP 的
; 缓存问题
session.cache_expire = 180 ; 文档在 n 分钟后过时
session.use_trans_sid = 1 ; 使用过渡性的 sid 支持,若编译时许可了
; –enable-trans-sid
url_rewriter.tags = “a=href,area=href,frame=src,input=src,form=fakeentry”

 

By 木頭 on 2008年09月3日 | 6.技
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值