需求场景:开机启动程序。
思路:编写shell,并在shell中调用java命令启动java程序。
步骤:
一.准备java程序。
二.编写shell脚本,用以启动java程序。
三.执行shell(.sh)脚本,查看程序运行结果。
下面进入正题:
一.准备java程序。
说明:此程序实现了博主(CSDN博客)用户总访问数的抓取(每隔1分钟抓取1次),仅做Demo用。
package simple.callback.network;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Htmlget2 {
// cd ~/IdeaProjects/psimple/src && java simple.callback.network.Htmlget | tee -a ~/Documents/blog.log
// . /home/wangyetao/IdeaProjects/psimple/src/java_auto.sh
public static void main(String[] args) throws Exception {
String blogUrl = "https://blog.csdn.net/u014132947";
String blogFile = "/home/wangyetao/Documents/blog.log";
System.out.println("\n博客地址:" + blogUrl + "(每隔1分钟抓取1次)");
System.out.println("日志文件位置:" + blogFile);
Timer timer = new Timer();
/**
* Params:
* task – task to be scheduled.
* delay – delay in milliseconds before task is to be executed.
* period – time in milliseconds between successive task executions.
*/
timer.schedule(new TimerTask() {
public void run() {
getHtml(blogUrl);
}
}, 0, 1000 * 60);
}
public static void getHtml(String blogUrl) {
String strCount = "";
String txtData = "";
try {
URL url = new URL(blogUrl);
try {
InputStream is = url.openStream();
InputStreamReader isr = new InputStreamReader(is, "utf-8");
BufferedReader br = new BufferedReader(isr);
String lineData = br.readLine();
while (lineData != null) {
lineData = br.readLine();
txtData += lineData;
}
br.close();
isr.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
int index = txtData.indexOf("min-width:58px");
strCount = txtData.substring(index + 23, index + 29);
System.out.println("访问数:" + strCount + ",抓取时间:" + new Date());//min-width:58px dl
}
}
二.编写shell脚本,用以启动java程序。
编写shell脚本保存名为"java_auto.sh"文件:
#!/bin/bash
java -cp ${PROJECT_1} simple.callback.network.Htmlget2 | tee -a ~/Documents/blog.log
注意:此处 ${PROJECT_1} 变量是当前用户系统变量,是运行当前的这个程序Htmlget2所在的项目目录,如果不引入的话程序将无法执行。环境变量如何配置的相关内容,请自行搜索,这里不展开。tee命令详解链接。
${PROJECT_1}环境变量博客配置在.profile文件:
wangyetao@wangyetao-Lenovo-G510:~$ cat .profile | grep PROJECT_1
export PROJECT_1=/home/wangyetao/IdeaProjects/psimple/src;
wangyetao@wangyetao-Lenovo-G510:~$
赋予shell可执行权限:
sudo chmod +x java_auto.sh
三.执行shell(.sh)脚本,查看程序运行结果。
. /home/wangyetao/IdeaProjects/psimple/src/java_auto.sh