Linux基本操作实验(4)

Linux和UNIX通常都是构建服务器应用的首先。为什么呢?因为很明显的一个特征就是比WINDOWS能持续运行很长时间不用重起。Window,就算2003 Server也是需要一段时间重起,不能够运行很长时间。所以现在大型的服务器后台应用都是架构在LINUX或者UNIX上。这里顺便提一个概念就是后台与前台。通常在WEB开发时都会有提到后台与前台,有些人会告诉你前台就是一些展示给客户的页面,后台就是一些处理逻辑。或者有些地方又将展示给客户的入口称之为前台,展示给内部管理人员的入口又称之为后台。当然从哲学上来说,前后台只是一个相对概念。我们在语言开发时,特别是基于线程开发,线程中经常有一个概念就是前台阻塞线程和后台线程。对LINUX服务器来说,运行其上的都是一些应用进程,这些进程有些是系统守护进程,有些是响应键盘的事件进程,那么如何进行前后台定义呢?有些地方是这样描述的,前台程序是通过终端来处理事件,其结构一般为无限循环,后台则是一个系统管理调度程序,也称为任务级程序。前台通常是事件驱动,后台则是不阻塞用户终端。不知道这样描述能否让你理解,但是总之一句话,前台进程通常需要占用控制终端,而后台进程则不需要。那么怎么让一个进程变成后台进程呢?通常我们可以使用&命令进行提交任务作业。比喻如下:

nohup /vob/build.sh 2>1 &>1 &

就会创建一个后台进程,后台进程是不是一定是守护进程,这个一般来取决于你的应用是否是demon进程,将自己fock出来。我们知道通常一个SHELL脚本是不能模拟出一个守护进程出来。因此LINUX有一个工具包crontab和at可以用来进行后台执行命令。

cron是一个可以用来根据分钟、小时、天数、月份、星期的组合实现周期性执行调度任务的守护进程。利用cron 提供的配置选项可以将周期性重复执行的任务设置为cron任务。cron来源于chronos(时间)这个单词.

【1】下载安装cron。

cron目前实际上有两种应用,一种是vixie-cron,它实现了是一个守护进程,可以定时执行任务。还一种是anacron,它是一个普通进程,运行一次就会结束,但它可以执行vixie-cron定义的所有任务。crontabs是上面两个应用的配置的任务管理工具。

image

【2】启动cron服务,默认情况,crond开机就会启动,也可以使用service或者/etc/init.d/crond手工起动。或者使用chkconfig将cron加入启动项。

image

【3】配置cron任务项 配置一个cron任务,需要关注三点,一个是什么样的任务,另一个就是这个任务的周期性怎样,再一个就是使用谁的账号去执行这个任务。记住了这三点就比较容易理解cron配置。

1)定义哪些账号可以执行周期性任务  使用 /etc/cron.deny 和/etc/cron.allow文件来限制对cron的使用用户。这两个文件的格式都是每行一个用户,不允许空格。但根用户root不能deny。通常检测机制是先看allow再看deny

root@root2003:# cat /etc/cron.allow
root
root@root2003:# cat /etc/cron.deny

2)任务的周期性 定义格式如下

image

这里面还需要说明一下,就是几个通配符。

* 可以代表任何有效的值,如月份位是*表示每月都执行。

- 整数之间用短线表示一个范围,如 * 1-4 * * * cp *.tar /tmp 这里1-4表示1点,2点.3点.4点四个时间点。

,整数之间用,隔开表示一个列表值,如* 1,2,3 * * * cp *.tar /tmp 这里表示1点,2点,3点三个时间点

/ 正斜线表示间隔频率,如* * */3 * * 表示每隔三天。这里还可以与-一起使用,前面说1-4的间隔是1,也可1-5/2这样间隔就是2了,变成1,3 ,5

# 注释行。

59 * * * *      root  /etc/init.d/logrotate
59 * * * *     root  /etc/ncs/coredump_hourly.sh
55 23 * * *     root  /etc/ncs/coredump_daily.sh
59 23 * * *  root /etc/tst/dtsvlogmgmt.sh 10 >> /var/log/logmgmt.log

3)任务定义 任务通常都是一些Shell 脚本、命令、及perl 命令或者perl脚本等,当然也有一些应用。Cron按用户和按时间段可以将多个任进行分类保存。通常/etc/crontab 保存是一个系统的全局的配置文件。查看这个配置文件,我们可以看出,其中多一个参数 run-parts后面加上命令保存的路径。每个用户单独创建的配置文件一般保存在/var/spool/cron/crontab下,这个目录下会为每个用户建一个以用户名字命名的配置文件。

image

4)配置命令 crontab �Cl 列出当前用户 crontab �Ce 编辑一个新的文件

[root@windriver-machine ~]# cat /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
[root@windriver-machine ~]# crontab -l
no crontab for root
[root@windriver-machine ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@windriver-machine ~]# crontab -l
*/2 * * * * /bin/echo `date` >/dev/tty1
[root@windriver-machine ~]# tty
/dev/pts/0
[root@windriver-machine ~]# crontab -e
crontab: installing new crontab
[root@windriver-machine ~]# crontab -e
crontab: installing new crontab
[root@windriver-machine ~]# crontab -l
*/1 * * * * /bin/echo `date` >/dev/pts/0
[root@windriver-machine ~]# date -u
Sun Aug  7 16:44:52 UTC 2011
[root@windriver-machine ~]# Mon Aug 8 00:45:01 CST 2011

[root@windriver-machine ~]# Mon Aug 8 00:46:01 CST 2011
Mon Aug 8 00:47:01 CST 2011
Mon Aug 8 00:48:01 CST 2011
Mon Aug 8 00:49:01 CST 2011
Mon Aug 8 00:50:01 CST 2011
Mon Aug 8 00:51:01 CST 2011

[root@windriver-machine ~]# crontab -e
crontab: no changes made to crontab
[root@windriver-machine ~]# crontab -r
[root@windriver-machine ~]# crontab -e
no crontab for root - using an empty one
crontab: no changes made to crontab
[root@windriver-machine ~]# crontab -l
no crontab for root
[root@windriver-machine ~]#

at 是Linux下部署一次性任务工具包。

【1】安装at。 at是有一个第三方开发包,缺省LINUX都安装好了。

image

【2】启动at,首先通过命令查看at服务状态。

image

【3】配置at一次性任务。 at 的基本格式是 at 指定时间 后接指定任务。 每创建一个at任务,系统都会在/var/spool/at下创建一个任务名。当这个任务被执行后,它就会被删除。 当然在执行之前也可以使用命令atrm来删除,使用atq来查看。

image

同cron一样,at 也可控制用户使用/etc/at.allow 和/etc/at.deny。也可以使用一些选项如-m �Cq -l。还可以使用另外一个命令batch。这是一个特殊命令,只有当系统负载下降到0.8时才会执行的。

你可能感兴趣的:(linux,服务器,职场,安全,休闲)