linux tomcat 日志 catalina.out没有,日志里面没一个文件

linux tomcat 日志 catalina.out没有,日志里面没一个文件,第1张

方法有两种 第一种最简单 :在你的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路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9471013.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存