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 命令 [即每月的 1112131 日是的 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 &
来源: http://www.bubuko.com/infodetail-2530257.html