
当我在Centos 7 linuxterminal中以root用户身份运行以下命令时,它会产生57行输出:
journalctl --output=Json-pretty UNIT=firewalld.service
那么,如何改变下面的代码来成功从Java调用这个代码,而不必将密码保留在文件中呢?
这是我的尝试。 当我执行下面的代码时,控制台只输出exit: 1 :
String s; Process p; try { p = Runtime.getRuntime().exec("journalctl --output=Json-pretty UNIT=firewalld.service"); BufferedReader br = new BufferedReader(new inputStreamReader(p.getinputStream())); while ((s = br.readline()) != null) System.out.println("line: " + s); p.waitFor(); System.out.println ("exit: " + p.exitValue()); p.destroy(); } catch (Exception e) {}
编辑:
linux ps命令 – 获取进程运行时间 – etime和time参数不同
添加一个斜杠mod_rewrite
libMysqLclIEnt.so.15:无法打开共享对象文件:没有这样的文件或目录
来自EPEL的Amazon linux上的Clang找不到C ++头文件或库
使用vagrant来提供简单的MysqL设置(使用shellconfiguration程序)
当我添加以下内容:
BufferedReader br2 = new BufferedReader(new inputStreamReader(p.getErrorStream())); while ((s = br2.readline()) != null) System.out.println("error line: " + s);
以下输出生成:
error line: No journal files were found. error line: Failed to get realtime timestamp: Cannot assign requested address
问题与权限有关吗? 当我从linuxterminal运行journalctl --output=Json-pretty UNIT=firewalld.service作为root ,我得到了57行输出。 但是当我运行journalctl --output=Json-pretty UNIT=firewalld.service作为普通用户时,terminal告诉我没有find文件。 我不想把我的root密码放在java代码中。 有没有其他的方式来调用journalctl从Java而不必离开系统的根密码在一个文件?
百胜安装通过其他服务器
Djangopipe理file upload中的“连接重置”错误
CentOS和Fontconfig:无法加载默认configuration文件
从Centos中拉出图片(最新)时出错,需要valIDation
手动修补传统服务器上的Ghost漏洞
尽管journalctl的手册页告诉你,添加一个用户到systemd-journal应该允许他们访问所有的日志,这在CentOS 7上是行不通的。我最初是这样做的:
chmod +s /usr/bin/journalctl
但是,这使得每个人都可以访问期刊,这可能不是你想要的 。
正如@RealSkeptic指出, systemd-journald.service的man页表明可以赋予群组额外的访问权限以读取日志(并且指出向systemd-journal添加用户应该足够了)。 结合这些信息,你可以做到
sudo setfacl -Rnm g:systemd-journal:rx,d:g:systemd-journal:rx /run/log/journal/
然后,根据手册页将用户添加到systemd-journal组,足以允许访问日记帐:
sudo usermod -a -G systemd-journal your_user_name
您可以使用usermod -a -G systemd-journal <username>将您的(普通)用户添加到组systemd-journal 。 注销并登录,以使更改生效。 这使您的用户可以访问系统日志文件,而不必为其提供完整的root权限。
对于不同的 *** 作系统设置,组可能会有所不同。 您可以通过使用ls -l /var/log/journal/或ls -l /run/systemd/journal/ if /var/log/journal/不存在来简单地查看日志文件所属的组。
我已经在CentOS liveCD中试过这个,并且文件所属的组是root 。 所以你可以将用户添加到组root ,这不同于给它完全的根权限。
不过,我认为更好的办法是在日志文件上设置ACL以允许特定的组访问它们,因为root组可能访问得太多了。 systemd-journald.service的手册给出了这个ACL修改命令的示例,该命令授予读取wheel和日志的访问权限:
setfacl -Rnm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx /var/log/journal/
总结以上是内存溢出为你收集整理的从java调用journalctl全部内容,希望文章能够帮你解决从java调用journalctl所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)