管理服务
1.后台服务是执行各种任务的后台等待或运行的进程。一般情况下,后台程序在引导时自动启动并持续运行至关机或被手动停止。按照惯例,许多后台程序的名称以字母“ d” 结束。后台程序通过服务脚本管理,服务脚本保存在 /etc/rc.d/init.d/ 目录中。服务脚本通过单个 start、stop、restart、status 或 reload 参数调用。运行服务脚本的最简单方式是使用 service 命令。
服务已启用(通过 chkconfig service on ,配置为引导时自动启动)。服务禁用通过 chkconfig service off (配置为在引导时不自动启动)。还可以在特定运行级别对是启动还是禁用服务进行更加复杂的控制。如果不用参数, chkconfig 会列出所有服务的当前配置。可以通过 chkconfig --list service 观察在其中启用服务的运行级别。运行 chkconfig 命令不会立即影响从服务脚本启动的后台程序的状态。
chkconfig httpd on    配置为引导时自动启动
chkconfig httpd off   配置为引导时不自动启动
chkconfig --list httpd 会列出启动服务的运行级别
chkconfig --level 35 httpd off  指出在35这两个运行级别该服务是关闭的
chkconfig --del httpd           删除httpd服务在当前运行级别的服务给关闭了
chkconfig --add httpd           添加httpd服务在当前运行级别的服务给开启了,你可以通过chkconfig --list httpd列出是否在当前运行级别开启服务了。
2.进入cd /etc/rc.d/rc5.d/你可以看到好多以S或者是以K开头的服务,以K开头的是指的是进入此运行级别时要杀死的Kill的
进程,S打头的是运行到此运行级别后要Start的进程Start。
3.诊断网络服务问题
# service httpd restart
我们刚刚重新启动了 httpd 服务。那么如何确认服务正在工作?
尝试使用 Web 浏览器进行访问。
假设重新启动失败,我们可以执行以下步骤诊断问题:
(1)后台程序是否正在运行,执行命令” ps aux|grep httpd”(top 实用程序显示当前进程的自动更新列表,可以看到动态变化的进程信息的), 如果没有发现 httpd 进程,执行以下步骤:
    a. 检查 /var/log/messages 或服务特定日志文件。
    b. 尝试从命令行“手动”启动后台服务,查看是否存在错误。
(2)后台程序正在运行,但未侦听正确的端口,执行以下步骤:
    a. 检查服务的配置文件,特别注意与网络绑定相关的所有配置选项。
    b. 考虑 SELinux 配置。后台程序是否尝试连接到非标准端口?日志中是否存在 SELinux 错误?
若要检查后台程序是否绑定到正确的端口,请运行以下命令:
# netstat -antulp |grep httpd
tcp    0    0 :::80        :::*    LISTEN    3071/httpd
(3)后台程序运行并绑定正确的端口,外部客户端无法连接,问题可能出在哪里?
    a. 问题很可能与内核级别的防火墙相关。
4.许多程序使用标准协议向 rsyslogd 发送消息。每条消息都通过设备(消息类型)和严重性(重要程度)加以描述。可用设备的名称和严重性级别已标准化。 /etc/rsyslog.conf 文件使用日志消息的设备和严重性确定应将其发送的位置(例如,发送到日志文件)。/etc/rsyslog.conf的###RULES###部分包含定义日志消息保存位置的相关指令。每行左侧表示与指令匹配的日志消息的设备和严重性。每行右侧表示要将日志消息保存到的文件。请注意,日志消息通常保存在 /var/log 目录中的文件中。
默认日志文件
1. 与身份验证相关的所有消息保存到: /var/log/secure
2. 与电子邮件相关的所有内容保存到: /var/log/maillog
3. 与 cron 相关的消息保存到 : /var/log/cron
4. 以 info 优先级或更高优先级的其他所有消息都保存在: /var/log/messages
5.轮转日志
(1)将“轮转”日志,以避免日志占满包含 /var/log 的文件系统。
轮转日志文件时,使用扩展名对其进行重命名,扩展名中指示轮转日期:如果在 2010 年 10 月 30 日轮转文件,原 /var/log/messages 文件可能成为 /var/log/messages-20101030 。轮转原日志文件之后,会创建新日志文件,并通过对它执行写操作的服务。轮转若干次之后(通常在四周之后),丢弃原日志文件以节省磁盘空间。cron 作业每日运行一次 logrotate 程序,以查看是否有任何日志需要轮转。大多数日志文件每周轮转一次,但是 logrotate 轮转文件的速度有时较快,有时较慢,或在文件达到特
定大小时进行轮转。
(2)定位和分析日志汇总报告
可以安装名为 logwatch 的程序,它将自动分析标准日志文件,并向 root 发送汇总电子邮件。检查系统状态的一种便捷方法是阅读此日志汇总报告。logwatch 作为每日 cron 作业运行,以生成相关日志消息的报告。默认情况下,此报告通过电子邮件发
送到本地 root 账户。如果要手动生成 logwatch 电子邮件,只需运行logwatch。
/etc/logwatch/conf/logwatch.conf 是一个空文件,包含本地 logwatch 设置。Logwatch 的系统范围默认设置保存在 /usr/share/logwatch/default.conf/logwatch.conf 中。通常,您编辑 /etc 中的文件,而不是 /usr/share 中的默认文件。 MailTo 元素获取要将 logwatch 报告发送到电子邮件地址;默认情况下, logwatch 使用 root 。如果您想要 student 接受邮件,则向 /etc/logwatch/conf/logwatch.conf 文件添加以下行:
MailTo = student
6.ps -aux :ps 提供了很多的选项参数,常用的有以下几个;
l 长格式输出;
u 按用户名和启动时间的顺序来显示进程;
j 用任务格式来显示进程;
f 用树形格式来显示进程;
a 显示所有用户的所有进程(包括其它用户);
x 显示无控制终端的进程;
r 显示运行中的进程;
ww 避免详细参数被截断;
我们常用的选项是组合是aux 或lax,还有参数f的应用;
ps aux 或lax输出的解释;
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI    进程的NICE值,数值大,表示较少占用CPU时间;
VSZ   进程虚拟大小;
RSS   驻留中页的数量;
TTY 终端ID
STAT 进程状态
(D:Uninterruptible sleep (usually IO) R:正在运行可中在队列中可过行的; S:处于休眠状态; T:停止或被追踪; W:进入内存交换(从内核2.6开始无效); X:死掉的进程(从来没见过); Z:僵尸进程; <:优先级高的进程 N:优先级较低的进程 L:有些页被锁进内存; s:进程的领导者(在它之下有子进程);l:is multi-threaded (using CLONE_THREAD, like NPTL pthreads do) +:位于后台的进程组;)
WCHAN 正在等待的进程资源;
START 启动进程的时间;
TIME 进程消耗CPU的时间;
COMMAND 命令的名称和参数;
7.top 实用程序显示当前进程的自动更新列表:
可在 top 内使用一下键管理显示内容:
M :按内存使用率排列进程
P :按处理器使用率排列进程
h :显示有关更多命令的帮助
q :退出
如果按内存使用情况排列进程, top 认为 RES 比 VIRT 更重要。 RES 是进程当前使用的物理内存量(“驻留集”).VIRT是进程在虚拟内存映射中当前预留待用的空间,意义要小得多。甚至连 RES 都可能是高估值因为它包含与其他进程共享的内存。在 ps 中, VIRT 标记为 VSZ , RES 是 RSS 。
8.进程使用称为信号的消息进行通信。进程随时都会接受信号(异步)。除信号编号(表示信号属于哪种类型)之外,信号不携带其他任何信息。根据信号编号,进程能以不同方式处理信号:它可以退出、退出并转储内存副本、忽略信号或执行其他操作。大多数情况下,如果用户要向进程发送信号,就是要终止(退出)进程。系统事件可以向进程发送信号,用户也可以使用 kill 命令向进程发送任意信号。
信号
(1)top 和 kill 都可用于向进程发送信号。
(2)kill -l :显示定义的信号编号表。
(3)kill -9 3245 :向 PID 为 3245 的进程发送编号为 9 的信号。kill -15是比较委婉的终止进程,类似与end,请求在进行清理之后终止进程(默认选择这种方式终止,如果你不指明数字的情况下,-9就是强制进程立即终止,kill -9,kill -1是重新初始化后台程序)
(4)进程计划(nice值):Linux系统可以同时运行的进程书与它的CPU逻辑处理单元总数相同。通过是进程在逻辑处理单元上轮流运行(“时间分片”),系统中运行的进程数似乎更多。默认情况下,每个进程的nice值,以调整进程的优先级,使他所占的CPU时间份额大于或小于其他进程。nice值的范围从-20(非常希望占用其他进程的CPU时间)到19(非常愿意将CPU时间让给其他进程)默认值是0.在这里进程的nice值越小那么它的优先级就越高。用户(任何)可以提高进程的nice值(请求更小的时间份额),不过要记住,只有root用户可以降低进程的nice值(请求更大的时间份额),(root用户可以更改自己和他人的进程优先级,而普通用户只能更改自己的优先级,并且只可以降低优先级,也就时数字变大,因为数字越大进程的优先级越小,普通用户只可以增大自己的nice值)renice和top都可用于更改正在运行的进程的nice值。在top中你输入r可以修改进程的优先级。输入k之后可以杀死指定的进程。eg:renice -n 10 PID   调整PID的nice值为10
nice -n 5 cat /dev/zero > /dev/null &  (创建一个新进程cat /dev/zero > /dev/null并且将该进程的优先级设置为5.eg:cat /dev/zero > /dev/null &)
9.crontab用于管理定期任务
cron设备管理必须按照计划定期重复运行的程序,后台程序crond每分钟唤醒一次,以运行计划的任何用户使用crontab命令计划个人任务。系统管理员可以在系统范围配置文件中设置任务。单个用户使用称为crontab(cron表)的文本文件登录任务,crontab -l用于列出文件,crontab -r 删除文件,crontab -e 编辑文件。crontab -e使用的默认编辑器时vi。你也可以用crontab -u sushan -e(意思是以sushan这个用户身份来编辑crontab文件)crontab -e,命令将打开空的crontab文件。crontab文件的语法记录在crontab(5)中。你可以通过man 5 crontab来查看帮助文档。 每一行定义计划的任务,或者定义影响任务执行的“环境变量”。任务行包含六个字段:前五个字段定义分钟、小时、几号、月份和星期几,行的余下一个字段指定要运行的命令。以下示例显示了每分钟运行cron:
*     *      *      *      *      *
1     2      3      4      5      6
(1)第一字段:分钟:验证值为 0-59
(2)第二字段:小时:验证值为 0-23 , 20 表示 8:00pm
(3)第三字段:几号:验证值为 1-31
(4)第四字段:月:验证值为 1-12 ,或者该名称的前三个字母(例如 Jan )
(5)第五字段:星期几:验证值为 0-7 ( 0 或 7 为星期日),或者该名称的前三个字母(例如 Sun )
(6)第六字段:命令:如同您在命令行中键入命令一般来添加命令。使用分号 (;) 来分隔同时运行的多个命令。在不同时间
添加单独行来运行命令
eg:crontab语法:            表达得意思
05 * * * *                每小时整点过五分钟
05 02 * * *                 每天的2:05am
30 08 01 * *                 每月第一天8:30pm
00 07 25 12 *                 12月25日7:00am
30 16 * * 5                             每个星期五 4:30pm
*/5 * * * *                             每 5 分钟( 0 、 5 、 10...45 、 50 、 55 )
*/10 9-17 1,15 * *                      在每月第一天和第十五天 9:00am 至 5:00pm 之间(在 5:00pm 不会
                                        运行,最后一次运行是在 4:50pm )每隔 10 分钟
0 0 1 jan 0                             1 月 1 日午夜和 1 月的每个星期日(不仅是 1 月 1 日所在的星期日)
属于系统的任务通常保存在 /etc/crontab 文件中而不是使用 crontab -e 编辑保存在个人文件中。更好的做法是用文本编辑器创建 crontab 文件并保存到 /etc/cron.d 中(避免更新系统软件包 cronie 时出现问题)。 /etc/cron.d/crontab 文件在日期说明后另加一个字段,表示将运行作业的用户。对于需要每天、每周或每月运行一次的脚本,可以直接将其设置为可执行文件,并保存在 /etc/cron.{daily,weekly,monthly} 中相应目录下。这些任务由 /etc/anacrontab 配置的系anacron 服务运行anacron 是 cron 的集成组件,用于更好地管理作业,并确保在作业因计算机关闭而未运行的情况下,在系统引导后运行作业。
10.at 命令
at 命令可以指定某一任务在将来的特定时间运行。该作业可能是一次备份、对您系统的检查或者特定时间发送的通知。那些需要花费很长时间才可完成的作业正适合 at 命令。仅需使用 at 命令将任务设置为在一分钟或两分钟之后运行。然后您便可以安全注销,因为该任务会在与 shell 会话断开连接的情况下运行。
at 命令必须指定任务应运行的时间。该指定可以是具体时间和 / 或日期(例如星期一, 10:00pm 或 7 月15 日)。也可以是当前时间的相对时间(现在时间加上 5 分钟,现在时间加上 3 天或 4:00pm 加上 1 周)通过添加其他选项,您可以在任务完成是发送邮件( -m ),或者从文件中读取任务( -f 文件),而无需通过标准输入进行。
在键入 at 命令行之后,按 Enter 并继续键入作业中包含的其他命令。任务可由多个命令组成。在完成键入要运行的命令时,在单独出现的一行中按 Ctrl+d 完成任务。例如:
[root@serverX ~]# at now +2 min   意思是在2分钟之后执行以下命令(at 6:00pm tomorrow 指的是在明天下午6点执行的命令)
at> echo "Hello from the at command" > /dev/pts/0
at> <EOT>
job 4 at 2011-08-10 14:05
在将某一at作业设置为运行之后,可以
通过使用 atq 命令列出作业编号以及次数。
若要查看作业中所包含的命令,键入 at -c # ( # 号为作业编号)。
atrm  # ( # 号为作业编号) 则是删除指定作业。