CentOS之——Linux(centos 6.5) 调用java脚本以及定时执行的脚本实例及配置文件详解

Linux(centos 6.5) 调用java脚本以及定时执行的脚本实例
一、调用java程序脚本(默认已经搭建好了Java环境)

1、jdk 安装路径 /usr/jdk/jdk1.7/……
2、java 程序路径 /usr/jdk
3、类名:Test.java(有主函数的类名)
4、调用java类的脚本,注意脚本的后缀是.sh
5、脚本内容:
(1)#!/bin/bash
// #! 特殊符号,说明这个脚本是由/bin 目录下的bash这个shell来解释并将解释后的内容给kernel来执行
(2)cd /usr/jdk
(3)/usr/jdk/jdk1.7/bin/javac Test.java
(4)/usr/jdk/jdk1.7/bin/java Test
6、脚本名称: testshell.sh
7、执行这个脚本来编译java程序,解释执行jvm机器码

8、执行脚本command: sh testshell.sh


二、定时执行任务

1、linux有个系统级的定时任务服务,叫cron,终端里的命令是crontab,使用他就可以定时执行脚本

2、编写定时任务的文件叫crontab 在 /etc/目录下

3、打开方式有两种,一种是用户级别,一种是系统级别:crontab -e 用户级别 vim crontab 系统级别

4、有两种打开方式也就有两种查看方式,crontab -l 查看用户级别的定时任务 more /less/tail/head 查看系统级别的任务

5、crontab文件中定义的一些 属性:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
(1)、SHELL变量指定了系统要使用哪个shell,这里是bash。

(2)、PATH变量指定了系统执行命令的路径。

(3)、MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户。

(4)、HOME变量指定了在执行命令或者脚本时使用的主目录。

6、定时任务的格式: crontab中的一个实例,这里是使用vim 编辑的所以是系统级的
# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
* * * * * root sh /usr/jdk/testshell.sh

*/1 * * * * root sh /usr/jdk/testshell.sh

解释: 通过crontab 自带的这个我们可以清晰的看到定时任务的格式,所以就不多说了, 上面自己定义的两个任务都是每一分钟执行一次任务,而用户是root

上面是没一分钟执行一次:

下面是每小时执行一次:

0 * * * * rootsh /usr/jdk/testshell.sh // 每小时的0 分钟执行

0 */1 * * * rootsh /usr/jdk/testshell.sh // 每小时的0 分钟执行

这两种方式都是定义每一小时的“0”分钟执行一次。

当然两小时一次也一样:0 */2 * * * rootsh /usr/jdk/testshell.sh

* */2 * * * rootsh /usr/jdk/testshell.sh 这种方式有的没问题有的没有问题注意使用

在指定的时间范围内每几分钟执行一次:

*/10 4-18 * * * root sh/usr/jdk/testshell.sh // 从凌晨4点到下午6点每10分钟执行一次。

每一天的指定时间执行一次:

0 0 * * * rootsh /usr/jdk/testshell.sh // 每天的0点 0 分执行一次

10 14 * * * rootsh /usr/jdk/testshell.sh // 每天的14点10分执行一次

10 10,11,14 rootsh /usr/jdk/testshell.sh // 每天的10、11、14点10分执行一次

每周指定日期时间执行一次:

0 0 * * 0 rootsh /usr/jdk/testshell.sh // 每周日的0点0分执行一次

01 19 * * 1 rootsh /usr/jdk/testshell.sh // 每周一的19点1分执行一次
10 15 * *5rootsh /usr/jdk/testshell.sh // 每周五的15点10分执行一次

注意:0 和7 表示的的是周日

每月指定日期时间执行一次:

0 0 1 * * root sh /usr/jdk/testshell.sh // 每月的第1天的0时0分执行一次
15 14 20 * * root sh /usr/jdk/testshell.sh // 每月的第20天的14点15分执行一次

7、 到这里定时任务就完成了,但不一定会成功执行,下面说说像我这种菜鸟会经常犯的错误

8、如果定义后没有执行定时任务,则可以去/var/spool/mail 查看 相应的日志,如果报错则说明脚本写的有问题,注意这里出错概率比较大的就是路径的问题,所以在写脚本的时候可以写全路径来试试。

9、如果没报错,则说明没有执行定时任务,cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

10、你也可以将这个服务在系统启动的时候自动启动:

在/etc/rc.d/rc.local这个脚本的末尾加上:

/sbin/service crond start


11、时间的设定:

分钟 (0-59)

小時 (0-23)

日期 (1-31)

月份 (1-12)

星期 (0-6)//0代表星期天

除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字


三、在写调用java的程序脚本时会有个 -cp 这个是干嘛的那,那我们来看看:

1、-cP :讲解
因为我们自己写的java程序要运行,可能要包含除java.lang.*外的其它类或类库,使用-cp可以指定这些类库或类。
java -cp c:\dir1\lib.jar Test
-cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;”而linux 下去是“:” 有区别的注意

2、完整实例展示:

source /home/newsgroup/.bash_profile
LANG=zh_CN
export LANG
cd /www/autopublish.news.fang.com/auto_publishnews/bin
/usr/java/jdk1.6.0_35/bin/java -cp .:../lib/commons-httpclient-3.1.jar:../lib/commons-logging.jar:../lib/jdom.jar:../lib/log4j-1.2.8.jar:../lib/sqljdbc4.jar

com.fang.autopub/NewsAutoPublishing


3、实例分析:

(1)、

source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代。
如:source .bash_rc 与 . .bash_rc 是等效的。
注意:source命令与shell scripts的区别是:
source在当前bash环境下执行命令而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。

(2)、
export AAA="hello"
只是把这个变量载入到内存中,而并没有写入哪个文件。就像ifconfig eth0 192.168.1.100 up一样,只是对内存进行操作,没有写入到磁盘上,而注销或重启之后,系统加载的磁盘上的文件。
要想把他变成永久性的需要把他添加到开机启动的脚本中。/etc/profile、/etc/bashrc等式“全局”,开机之后自动加载,所有用户共享着些文件。而每个用户的家目录下的 .bashrc、.barsh_profile等脚本是“局部”的,只对该用户有效。这样就满足了各个用户不同的需求。

(3)、

-cp 指定了这些包所在的具体路径

最下面的包名称+ 类名称组成完整的路径,但是你会发现,包名称和类名称之间不是使用“,” 而是“/”


四、错误分析:

写的脚本有可能一次不会成功,所以我们要对错误进行分析,而crontab 中的定时任务有没有执行怎么查看那,具体如下:

1、查看日志,有没有执行你写的定时任务,日志路径: /var/log/cron 这个就是定时任务的日志,打开后如果能看到你的命令在日志中说明定时任务执行了。错误来自你写的脚本

2、如果日志文件中没有,则说明没有执行你的定时任务,这时我们要重启crond服务: /etc/init.d/crond restart


总结:在 Linux 底下的 crontab 会自动的帮我们每分钟重新读取一次 /etc/crontab 的例行工作事项,但是某些原因或者是其它的 Unix 系统中,由于 crontab 是读到内存当中的,所以在你修改完 /etc/crontab 之后,可能并不会马上执行,这个时候请重新启动 crond 这个服务即 /etc/init.d/crond.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor 1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep 'Time zone'查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO="static" ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// <summary> /// 取小写文件名后缀 /// </summary> /// <param name="name">文件名</param> /// <returns>返回小写后缀,不带“.”</ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start & nohup ./kibana &
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程, ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属