Linux上定时任务发布及锁定(2)
2017-11-12 11:08
99 查看
一,发布定时任务
1.发布定时任务时,有些任务执行时间很长在此期间,你希望在去启动一个相同的进程,就需要去加锁,怎么加锁呢,例如:
我要每天晚上十点启动一个任务,在etc/crontab中添加如下命令:
00 22 * * * root /usr/bin/flock -xn /etc/cron.sharp/Diff.lock -c '/etc/cron.sharp/Diff.sh'
a.Diff.lock文件内容可以为空
b.Diff.sh文件内容如下
#!/bin/sh
cd /data/sqlview
java -Dfile.encoding=UTF-8 -classpath .:/data/sqlview/lib/sqljdbc4.jar:/data/sqlview/lib/ant-1.6.jar:/data/sqlview/lib/commons-logging-1.1.3.jar:/data/sqlview/lib/log4j-1.2.15.jar:/data/sqlview/lib/ibatis-2.3.0.677.jar:/data/sqlview/lib/mail-1.4.jar:/data/sqlview/lib/commons-net-3.3.jar:/data/sqlview/bin
jp.co.crm.batch.DaliyBatch 0 2
2.在制定的 /data目录下放一个sqlview项目就可以了,晚上十点就会去跑该项目的jp.co.crm.batch.DaliyBatch的main函数,并传入两个参数0,2
二.定时任务被锁定,如下所示
[root@CentosBATCH cron.sharp]# ps aux|grep Diff
root 26887 0.0 0.0 103316 840 pts/1 S+ 11:58 0:00 grep Diff
root 32246 0.0 0.0 100900 216 ? Ss Nov09 0:00 /usr/bin/flock -xn /etc/cron.sharp/Diff.lock -c /etc/cron.sharp/Diff.sh
root 32253 0.0 0.0 106108 364 ? S Nov09 0:00 /bin/sh /etc/cron.sharp/Diff.sh
flock 用于锁定任务,锁定之后定时任务不在执行.sh文件
因为Diff.sh中执行的文件是DaliyBatch.class,所以查找ps aux|grep Daliy*,如下
[root@CentosBATCH data]# ps aux|grep Dal*
root 2256 0.0 0.0 80956 584 ? S Oct14 0:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root 3412 0.0 0.0 103320 868 pts/1 S+ 08:28 0:00 grep Dal*
root 31550 0.0 0.2 1529484 4820 ? Sl Nov12 0:34 java -Dfile.encoding=UTF-8 -classpath .:/data/sqlview/lib/sqljdbc4.jar:/data/sqlview/lib/ant-1.6.jar:/data/sqlview/lib/commons-logging-1.1.3.jar:/data/sqlview/lib/log4j-1.2.15.jar:/data/sqlview/lib/ibatis-2.3.0.677.jar:/data/sqlview/lib/mail-1.4.jar:/data/sqlview/lib/commons-net-3.3.jar:/data/sqlview/bin
jp.co.crm.batch.DaliyBatch 0 2
root 31597 0.0 0.0 80956 596 ? S Nov12 0:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
三.解锁
kill -9 31550
[root@CentosBATCH data]# ps aux|grep Dal*
root 2256 0.0 0.0 80956 584 ? S Oct14 0:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root 3419 0.0 0.0 103320 868 pts/1 S+ 08:29 0:00 grep Dal*
[root@CentosBATCH data]# ps aux|grep iff
root 3421 0.0 0.0 103316 844 pts/1 S+ 08:29 0:00 grep iff
You have mail in /var/spool/mail/root
或者如下,但是下面执行后进程31550并不会消失
Ps aux|grep Diff
找到Diff的process id Diff的process id.以下用#####代表
Kill -9 #####
kill -9 32253
kill -9 32246
1.发布定时任务时,有些任务执行时间很长在此期间,你希望在去启动一个相同的进程,就需要去加锁,怎么加锁呢,例如:
我要每天晚上十点启动一个任务,在etc/crontab中添加如下命令:
00 22 * * * root /usr/bin/flock -xn /etc/cron.sharp/Diff.lock -c '/etc/cron.sharp/Diff.sh'
a.Diff.lock文件内容可以为空
b.Diff.sh文件内容如下
#!/bin/sh
cd /data/sqlview
java -Dfile.encoding=UTF-8 -classpath .:/data/sqlview/lib/sqljdbc4.jar:/data/sqlview/lib/ant-1.6.jar:/data/sqlview/lib/commons-logging-1.1.3.jar:/data/sqlview/lib/log4j-1.2.15.jar:/data/sqlview/lib/ibatis-2.3.0.677.jar:/data/sqlview/lib/mail-1.4.jar:/data/sqlview/lib/commons-net-3.3.jar:/data/sqlview/bin
jp.co.crm.batch.DaliyBatch 0 2
2.在制定的 /data目录下放一个sqlview项目就可以了,晚上十点就会去跑该项目的jp.co.crm.batch.DaliyBatch的main函数,并传入两个参数0,2
二.定时任务被锁定,如下所示
[root@CentosBATCH cron.sharp]# ps aux|grep Diff
root 26887 0.0 0.0 103316 840 pts/1 S+ 11:58 0:00 grep Diff
root 32246 0.0 0.0 100900 216 ? Ss Nov09 0:00 /usr/bin/flock -xn /etc/cron.sharp/Diff.lock -c /etc/cron.sharp/Diff.sh
root 32253 0.0 0.0 106108 364 ? S Nov09 0:00 /bin/sh /etc/cron.sharp/Diff.sh
flock 用于锁定任务,锁定之后定时任务不在执行.sh文件
因为Diff.sh中执行的文件是DaliyBatch.class,所以查找ps aux|grep Daliy*,如下
[root@CentosBATCH data]# ps aux|grep Dal*
root 2256 0.0 0.0 80956 584 ? S Oct14 0:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root 3412 0.0 0.0 103320 868 pts/1 S+ 08:28 0:00 grep Dal*
root 31550 0.0 0.2 1529484 4820 ? Sl Nov12 0:34 java -Dfile.encoding=UTF-8 -classpath .:/data/sqlview/lib/sqljdbc4.jar:/data/sqlview/lib/ant-1.6.jar:/data/sqlview/lib/commons-logging-1.1.3.jar:/data/sqlview/lib/log4j-1.2.15.jar:/data/sqlview/lib/ibatis-2.3.0.677.jar:/data/sqlview/lib/mail-1.4.jar:/data/sqlview/lib/commons-net-3.3.jar:/data/sqlview/bin
jp.co.crm.batch.DaliyBatch 0 2
root 31597 0.0 0.0 80956 596 ? S Nov12 0:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
三.解锁
kill -9 31550
[root@CentosBATCH data]# ps aux|grep Dal*
root 2256 0.0 0.0 80956 584 ? S Oct14 0:00 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
root 3419 0.0 0.0 103320 868 pts/1 S+ 08:29 0:00 grep Dal*
[root@CentosBATCH data]# ps aux|grep iff
root 3421 0.0 0.0 103316 844 pts/1 S+ 08:29 0:00 grep iff
You have mail in /var/spool/mail/root
或者如下,但是下面执行后进程31550并不会消失
Ps aux|grep Diff
找到Diff的process id Diff的process id.以下用#####代表
Kill -9 #####
kill -9 32253
kill -9 32246
相关文章推荐
- Linux上定时任务发布及锁定(1)
- Linux下如何发布Qt程序[转]
- “Linux 中国”发布微信矩阵:不细分,毋宁死
- 太棒了,QQ for linux 1.0 preview 官网那个正式版发布了。
- Linux 下 发布jar
- linux - 公有云发布个人静态站点
- Banshee 1.7.4 发布――Linux下非常强大的音乐播放器
- 【软件周刊】还没放弃 Flash?Adobe 发布 Linux 下的 Flash Player 24
- linux的定制和发布(一)
- Linux 内核 4.4 LTS 将于2016年1月10日发布
- Mac/Linux/Windos下仿站工具,基于Python的仿站工具,earnp/imitation仿站工具发布
- Linux 2.6.37 kernel 发布
- 每日开源新闻速递(2016/4/19):Escuelas Linux 发布了 4.4 版
- LFS 中文版手册发布:如何打造自己的 Linux 发行版
- linux下一个tomcat用不同端口发布多个项目
- WaxBerry Pi/杨梅派 XBMC-Linux 发布
- 关于linux下定时任务crontab
- PS4破解固件4.05发布:不仅能运行Linux,还能玩PS2游戏
- ArchBang Linux 2012.12 发布
- linux下使用hiredis异步API实现sub/pub消息订阅和发布的功能 标签: hiredishiredis异步APIhiredis事件处理redis消息订阅发布redis c接口 2016-