方法有两种 第一种最简单 :在你的tomcat的bin目录里面新建一个setenvsh文件 加入下面两行,重启tomcat 就ok。\x0d\JAVA_HOME=/usr/java/jdk160_13/ (根据你的Java安装目录修改)\x0d\JRE_HOME=/usr/java/jdk160_13/jre\x0d\\x0d\在不行把下面这种方式试试;\x0d\\x0d\vi /etc/profile //更改环境变量,此次我们更改的是所有用户的环境变量,打开文件后在最后加入下面三行变量\x0d\export JAVA_HOME=/usr/java/jdk160_13\x0d\export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib\x0d\export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin\x0d\做新的连接,进入/usr/bin目录下\x0d\ln -s -f /usr/java/jdk160_13/jre/bin/java\x0d\ln -s -f /usr/java/jdk160_13/bin/javac\x0d\source /etc/profile //运行环境变量\x0d\java _version //查看java版本,显示版本是160_13证明安装成功! \x0d\\x0d\还不行的话,hi交流!
Java 本身不能直接调用 Linux 内核,但是可以通过 JNI(Java Native Interface)机制来实现。JNI 是 Java 与本地代码(C/C++ 代码)交互的一种机制,可以在 Java 中调用 C/C++ 编写的函数和库,从而实现对 Linux 内核的调用。
一般来说,JNI 的使用流程如下:
1 编写 C/C++ 代码,实现需要调用的功能;
2 使用 JNI 提供的函数将 C/C++ 代码编译成动态链接库(so 文件);
3 在 Java 代码中声明 native 方法,并使用 SystemloadLibrary() 加载动态链接库;
4 在 Java 代码中调用 native 方法,实现对 C/C++ 代码的调用。
需要注意的是,JNI 调用本地代码需要使用一些特殊的数据类型和语法,需要对 C/C++ 代码和 Java 代码都比较熟悉,因此使用 JNI 调用 Linux 内核需要具备一定的技术水平。
java获取根路径有两种方式:
1),在servlet可以用一下方法取得:
requestgetRealPath(“/”) 例如:filepach = requestgetRealPath(“/”) ”//upload//”;
2),不从jsp,或servlet中获取,只从普通java类中获取:
String path =
getClass()getProtectionDomain()getCodeSource()getLocation()getPath();
SAXReader() saxReader = new SAXReader();
if(pathindexOf(“WEB-INF”)>0){
path = pathsubstring(0,pathindexOf(“/WEB-INF/classes”) 16);
// ‘/WEB-INF/classes’为16位
document = saxReaderread(path filename);
}else{
document = saxReaderread(getClass()getResourceAsStream(filename));
}
weblogic tomcat 下都有效
String path =
getClass()getProtectionDomain()getCodeSource()getLocation()getPath();
<!--EndFragment-->
在java程序中如何调用linux的命令?如何调用shell脚本呢?
这里不得不提到java的process类了。
process这个类是一个抽象类,封装了一个进程(你在调用linux的命令或者shell脚本就是为了执行一个在linux下执行的程序,所以应该使用process类)。
process类提供了执行从进程输入,执行输出到进程,等待进程完成,检查进程的推出状态,以及shut down掉进程。
至于详细的process类的介绍放在以后介绍。
另外还要注意一个类:Runtime类,Runtime类是一个与JVM运行时环境有关的类,这个类是Singleton的。
这里用到的RuntimegetRuntime()方法是取得当前JVM的运行环境,也是java中唯一可以得到运行环境的方法。(另外,Runtime的大部分方法都是实例方法,也就是说每次运行调用的时候都需要调用到getRuntime方法)
下面说说Runtime的exec()方法,这里要注意的有一点,就是public Process exec(String [] cmdArray, String [] envp);这个方法中cmdArray是一个执行的命令和参数的字符串数组,数组的第一个元素是要执行的命令往后依次都是命令的参数,envp感觉应该和C中的execve中的环境变量是一样的,envp中使用的是name=value的方式。
下面说一下,如何使用process来调用shell脚本
例如,我需要在linux下实行linux命令:sh testsh,下面就是执行testsh命令的方法:
这个var参数就是日期这个201102包的名字。
String shpath="/test/testsh"; //程序路径
Process process =null;
String command1 = “chmod 777 ” + shpath;
process = RuntimegetRuntime()exec(command1);
processwaitFor();
String var="201102"; //参数
String command2 = “/bin/sh ” + shpath + ” ” + var;
RuntimegetRuntime()exec(command2)waitFor();
有时,我们需要查看某个文件的增长速度,如日志文件,以此来感受系统的负载情况,因为一般情况下,日志写入越快,说明系统负载越重。
本文就来介绍下Linux中查看日志增长速度的几种方法,如下:
首先要介绍的是dd,因为dd命令几乎所有主流发行版都自带,无需额外安装,如下:
如上,使用 tail -F 获取新写入的数据,然后用管道将数据交给dd,dd将数据拷贝到 /dev/null ,其中 status=progress 是用来显示拷贝速度的,可见,我们日志的写入速度是 471 kB/s 。
pv命令可以看做是带进度的cp,如下:
原理与dd类似,不过命令换成了pv。
由于日志数据都是程序(如java)写入的,而在如下的伪文件中,存放着程序打开的文件信息,如下:
于是定期的读取这个offset就可以知道文件的写入速度了,这也是cv命令的实现原理,如下:
通过写一个小脚本,定期观察文件大小,也可查看文件写入速度,如下:
通过watch再加上观察,也能大致看出速度,如下:
其实转念一想,如果我们在某个函数中打上日志,然后通过grep过滤出此日志,然后我们只要计算每秒输出的日志行数,这岂不就是函数执行的QPS了!
这里可以通过 151/15 计算出QPS是10,由于没有超过1000,所以看到的是00kB/s,如果使用pv命令,会更简单一些,如下:
啥叫监控linux系统?
写java程序执行linux命令?
try {
String command = "ping localhost";
Process ps = RuntimegetRuntime()exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(ps
getInputStream()));
String line;
Systemoutprintln("------------------------");
while ((line = brreadLine()) != null) {
Systemoutprintln(line);
}
Systemoutprintln("------------------------");
} catch (Exception e) {
eprintStackTrace();
}
执行结果:
------------------------
Pinging xxx [127001] with 32 bytes of data:
Reply from 127001: bytes=32 time<1ms TTL=64
Reply from 127001: bytes=32 time<1ms TTL=64
Reply from 127001: bytes=32 time<1ms TTL=64
Reply from 127001: bytes=32 time<1ms TTL=64
Ping statistics for 127001:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
------------------------
修改对应的command就应该可以了 不知道你是不是这个需求?
以上就是关于linux tomcat 日志 catalina.out没有,日志里面没一个文件全部的内容,包括:linux tomcat 日志 catalina.out没有,日志里面没一个文件、java调用linux内核、java如何获得linux下web路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)