Linux(centos 6.5) 调用java脚本以及定时运行的脚本实例及配置文件具体解释

时间:2022-08-28 10:58:28

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 root
sh
/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 * *5 rootsh
/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.

Linux(centos 6.5) 调用java脚本以及定时运行的脚本实例及配置文件具体解释的更多相关文章

  1. 在linux下sh批处理文件调用java的方法

    解密 java -classpath collection-impl-0.0.1.jar com.ai.toptea.collection.message.DESEncrypt 1EFE4663895 ...

  2. Linux定时运行程序脚本

    项目开发中经常需要用将某个脚本定时运行从而避免其运行并不会影响到其他程序.虽说可以在脚本中利用sleep命令来做这一点,Linux自带了crontab命令可以很好的执行这一操作. 比如我们有名为som ...

  3. python学习 —— 获取系统运行情况信息并在Linux下设置定时运行python脚本

    代码: # -*- coding:utf-8 -*- from psutil import * def cpu_usage_rate(): for i, j in zip(range(1, cpu_c ...

  4. Linux Centos 使用 yum 安装java

    centos 使用 yum 安装java 首先,在你的服务器上运行一下更新. yum update 然后,在您的系统上搜索,任何版本的已安装的JDK组件. rpm -qa | grep -E '^op ...

  5. Nodejs随笔(二):像可执行shell脚本一样,运行node 脚本!

    在每次编写nodejs脚本的时候,只需在程序的开头加上如下代码(写过shell脚本的人应该很熟悉): #!/usr/local/bin/node 同时,修改文件权限为可执行: mesogene@mes ...

  6. 单独运行shell脚本与crontab运行shell脚本的区别

    crontab运行脚本存在两大问题:环境变量和路径,从而导致单独运行脚本没问题,但用crontab运行就报错. 1.环境变量 描述问题:crontab: usage error: no argumen ...

  7. crontab定时运行python脚本访问MySQL遇到问题

    最近写了一个python脚本来定时备份MySQL数据库.具体实现如下: 1)python脚本中使用os.system("mysqldump -h127.0.0.1 -uroot -ppass ...

  8. linux CentOS 安装 nginx+tomcat+java+mysql运行环境

    本文介绍了CentOS7 64 Java,Tomcat,MySQL,Maven热部署等服务器环境的搭建过程. 服务器: 已经将所需要的工具(Xshell,Xftp.FileZilla等sftp上传工具 ...

  9. Linux下使用Curl调用Java的WebService接口

    其实只要是标准的WSDL的SOA接口WebService都可以用. 调用方式: 注意:上面的方式不包括加密或者登录的,其实SOA有一套完整的加密方式. curl -H'Content-Type: te ...

随机推荐

  1. Codeforces 719B Anatoly and Cockroaches(元素的交叉排列问题)

    题目链接:http://codeforces.com/problemset/problem/719/B 题目大意: 有一队蟑螂用字符串表示,有黑色 ‘b’ 和红色 'r' 两种颜色,你想使这队蟑螂颜色 ...

  2. 多分类问题multicalss classification

    多分类问题:有N个类别C1,C2,...,Cn,多分类学习的基本思路是"拆解法",即将多分类任务拆分为若干个而分类任务求解,最经典的拆分策略是:"一对一",&q ...

  3. Objective-C ,ios,iphone开发基础:多个视图(view)之间的切换,以及视图之间传值。

    所有的视图都继承自 UIViewController,都使用 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nib ...

  4. CPrintDialog

    CPrintDialog 封装windows为打印提供服务的通用窗体. BOOL GetDefaults(); //获取默认设备,不显示对话框 // Helpers for parsing infor ...

  5. Hacker(21)----密码攻防之加密与解密基础

    密码对于用户而言并不陌生,它是一种用于保护重要信息和文件的工具,只有输入正确的密码才可查看文件和信息的具体内容.黑客为了获取这些信息,会采用各种方式来破解密码,因此用户不仅需要了解黑客破解密码的常用方 ...

  6. Java面向对象抽象类实例练习

    abstract class Animal { abstract void eat(); } class Cat extends Animal { void eat() { System.out.pr ...

  7. UI5-文档-4.24-Filtering

    在此步骤中,我们为产品列表添加一个搜索字段,并定义一个表示搜索项的过滤器.搜索时,列表会自动更新,只显示与搜索项匹配的项. Preview A search field is displayed ab ...

  8. Memcpy, blockcopy的进一步理解

    using System; using System.Runtime.InteropServices; using System.IO; namespace tx { struct ST { publ ...

  9. python3>日期和时间

    阅读目录 1.python3日期和时间 2.时间元组 3.获取格式化的时间 4.格式化日期 5.获取月日历 6.Time模块 7.datetime模块 回到顶部 1.python3日期和时间 Pyth ...

  10. linux系统中/etc/syslog.conf文件解读

    1: syslog.conf的介绍 对于不同类型的Unix,标准UnixLog系统的设置,实际上除了一些关键词的不同,系统的syslog.conf格式是相同的.syslog采用可配置的.统一的系统登记 ...