Linux 服务管理
Crontab周期性任务
at可以一次性执行。service atd status,它可以使用黑名单和白名单控制,参见/etc/at.deny,at.allow。
| 1 | $ at now+5 minutes | 
同理crontab也有访问控制文件cron.deny等。
系统服务crond每分钟会从配置文件中刷新定时任务。
| 1 | $ crontab -l # 列出任务,-r 清空 | 
crontab -e可以编辑计划任务。在最后追加
| 1 | # 每分钟输出系统时间到文件 | 
以root身份执行下列命令
| 1 | $ crontab -e | 
查看crond的日志文件可以发现每次都是新启动了一个进程。
配置文件
/etc/crontab,/etc/crond/filename,这两个是系统级的定时任务,使用crontab -l 命令无法列出。
在/etc/crontab中实际上是指定了MAILTO=root,即将定时任务执行的结果发送给root,我们可以查看/var/spool/mail/root文件。
| 1 | */1 * * * * root echo "job in the /etc/crontab" | 
crontab -l命令列出的任务实际上位于/var/spool/cron/username文件。
crontab最小单位是1分钟,如何让每0.5分钟执行一次?其实可以配置sleep命令。
| 1 | */1 * * * * date >> /tmp/tmp.date | 
/usr其实不是user的缩写,而是Unix System Resource的缩写。
系统定时任务我们也可以将脚本拷贝到/etc/cron.daily|hourly|monthly|weekly中将被anacron自动管理,推荐使用这种方式。
anacron配置
如果执行定时任务之前宕机了,anacron会自动判断是否需要重新执行定时任务。其配置文件位于/etc/anacrontab。
Linux服务管理
系统运行级别可以使用runlevel查看,可以使用init level进入特定的运行级别。
/etc/services文件写了常规服务和端口的映射。
| 1 | $ chkconfig --list | grep nginx | 
第二种方式设置开机自启动可以编辑配置文件/etc/rc.d/rc.local(别忘了赋予可执行权限),该文件和/etc/rc.local是一个软链接,修改哪个都一样。
进程管理
有计划重启服务器是系统维护的重要原则。
ps aux中TIME指的是进程占用CPU的时间,使用pstree -pu可以显示进程树(包含用户名和pid)。top命令支持交互模式(P,CPU排序,M,内存排序,N,pid排序),该命令的前5行解释如下:
| 1 | top - 20:19:51 up 19 days, 16:38, 2 users, load average: 0.15, 0.19, 0.18 # 1min,5min,15min的平均负载,单核不能大于1,双核不能大于2 | 
w命令可以查看登陆到当前系统中的用户,使用pkill可以按照登陆的终端号踢出用户,例如:pkill -9 -t tty1
工作管理
就是将程序放到后台执行。将程序放入后台有2种方法:
- 在执行的命令后面加上&(后台运行);
- 执行命令后按下Ctrl+Z(后台暂停)。
放入后台后可以使用jobs -l命令查看后台工作(+表示最后一个放入到后台的工作,-表示倒数第二个)。需要注意的是放入后台的任务不能和用户交互。fg %工作号将后台挂起的进程恢复到前台执行;bg %工作号用于将后台暂停的工作(Ctrl+Z)恢复到后台执行。
touch命令并不是新建文件,而是修改文件的时间戳。
把命令放入后台执行只能在当前终端执行,一旦退出或者关闭终端后台程序就会终止(发送了SIGHUB信号)!标准方法是使用
nohub 命令 &。
time命令用于统计程序的运行时间,包括用户态和内核态。详见:开源中国。
Linux上源码安装的3个步骤是./configure && make && make install,在configuration的时候可以使用-h查看编译选项。

