crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
1.linux任务调度的工作主要分为以下两类:
*系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
*个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。
2.crontab命令选项:
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
3.cron文件语法
分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)
4.记住几个特殊符号的含义:
"*"代表取值范围内的数字,
"/"代表"每",
"-"代表从某个数字到某个数字,
","分开几个离散的数字
5.举几个例子
5 * * * * ls //指定每小时的第5分钟执行一次ls命令
30 5 * * * ls //指定每天的 5:30 执行ls命令
30 7 8 * * ls //指定每月8号的7:30分执行ls命令
30 5 8 6 * ls //指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls //指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls //每月10号及20号的3:30执行ls命令[注:”,”用来连接多个不连续的时段]
25 8-11 * * * ls //每天8-11点的第25分钟执行ls命令[注:”-”用来连接连续的时段]
*/15 * * * * ls //每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls //每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]
50 7 * * * root run-parts /etc/cron.daily //每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件[ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]
6.新增调度任务可用两种方法:
a.在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
b.直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。 二 processes 进程管理
Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务。调度程序会被频繁的执行,所以调度程序要尽可能的高效;
2.加强交互性能:在系统相当的负载下,也要保证系统的响应时间;
3.保证公平和避免饥渴;
4.SMP调度:调度程序必须支持多处理系统;
5.软实时调度:系统必须有效的调用实时进程,但不保证一定满足其要求;
多任务: 多进程同时运行 抢占式多任务
进程分类: CPU bound: CPU密集型 I/O bound: IO密集型
进程优先级: 140:0-139 1-99:实时优先级,数字越大优先级越高 100-139:数字越小,优先级越高;
ps查看当前系统执行的线程列表,进行瞬间状态,不是连续状态,连续状态需要使用top名称查看 更多常用参数请使用 man ps查看
ps
显示所有进程详细信息
ps aux
-u 显示某个用户的进程列表
ps -f -u www-data
-C 通过名字或者命令搜索进程
ps -C apache2
--sort 根据进程cpu使用率降序排列,查看前5个进程 -pcpu表示降序 pcpu升序
ps aux --sort=-pcpu | head -5
-f 用树结构显示进程的层次关系,父子进程情况下
ps -f --forest -C apache2
##显示一个父进程的所有子进程
ps -o pid,uname,comm -C apache2
ps --ppid 2359
显示一个进程的所有线程 -L 参数
ps -p 3150 -L
显示进程的执行时间 -o参数
ps -e -o pid,comm,etime
watch命令可以用来实时捕捉ps显示进程
watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'
jobs 查看后台运行的进程 jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业,jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息
jobs
查看后台运营的进程号
jobs -p
查看现在被终止或者退出的进程号
jobs -n
kill命令 终止一个前台进程可以使用Ctrl+C键 kill 通过top或者ps获取进程id号 kill [-s 信号 | -p ] [ -a ] 进程号 ...
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。 关闭进程号12的进程
kill 12
等同于在前台运行PID为123的进程时按下Ctrl+C键
kill -2 123
如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程
kill -9 123
列出所有信号名称
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
kill -l
得到指定信号的数值
kill -l KILL
杀死指定用户所有进程
kill -u peidalinux
kill -9 $(ps -ef | grep peidalinux)
将后台中的命令调至前台继续运行 将进程123调至前台执行
fg 123
将一个在后台暂停的命令,变成继续执行
bg 123
该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思 下面输出被重定向到myout.file文件中
nohup command > myout.file 2>&1 &