小编Rip*_*eeb的帖子

Java JDK 在依赖项列表中缺少 libjli.so 路径,Debian

我正在编写 chroot 监狱的创建脚本,该自动化的一部分包括将各种可执行文件及其依赖项复制到监狱中。我正在使用以下 bash 行来解析依赖项列表中的文件路径(例如,对于 java):

$ ldd `which java` | grep -o '/[^()]*'
/lib/x86_64-linux-gnu/libz.so.1
/lib/x86_64-linux-gnu/libpthread.so.0
/lib/x86_64-linux-gnu/libdl.so.2
/lib/x86_64-linux-gnu/libc.so.6
/lib64/ld-linux-x86-64.so.2
Run Code Online (Sandbox Code Playgroud)

这对 Node.js 和 Python 非常有用,但是当我尝试java从监狱中执行时,出现错误:

java:加载共享库时出错:libjli.so:无法打开共享对象文件:没有这样的文件或目录

事实证明,依赖项列表中缺少libjli.so路径……至少那些ldd向我们展示的路径(第 5 行):

$ ldd `which java`
linux-vdso.so.1 =>  (0x00007ffff7f4d000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f7ac3928000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7ac370c000)
libjli.so => not found
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7ac3507000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7ac317c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7ac3b48000)
Run Code Online (Sandbox Code Playgroud)

我找到了文件...

$ find /usr/lib -name libjli.so
/usr/lib/jvm/java-6-openjdk-amd64/lib/amd64/jli/libjli.so
/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/jli/libjli.so
Run Code Online (Sandbox Code Playgroud)

...但我想知道为什么它没有列出ldd。它显然是一个已知的依赖项,但路径未知?任何帮助表示赞赏!

debian java dependencies jdk

8
推荐指数
2
解决办法
2万
查看次数

用AWK计算并除以总数

鉴于以下data文件...

foo     10
bar     20
oof     50
rab     20
Run Code Online (Sandbox Code Playgroud)

...我如何将第二列打印为第二列总数的百分比?换句话说,我想要...

foo     10    10%
bar     20    20%
oof     50    50%
rab     20    20%
Run Code Online (Sandbox Code Playgroud)

...当然,数字不太明显。我可以很容易地创建一个运行总数,但我不确定如何在打印行之前计算总数。我在 awk 文件中执行此操作totals.awk...

#!/usr/bin/awk -f
BEGIN{
        runningtotal=0
}
{
        runningtotal=runningtotal+$2
        print $1 "\t" $2 "\t" runningtotal "\t" $2/runningtotal
}
Run Code Online (Sandbox Code Playgroud)

所以,运行./totals.awk data收益...

foo     10      10      1
bar     20      30      0.666667
oof     50      80      0.625
rab     20      100     0.2
Run Code Online (Sandbox Code Playgroud)

有没有办法循环两次,一次计算总数,一次打印行?这在 AWK 中是可能的,还是我必须使用其他实用程序?

awk arithmetic

7
推荐指数
1
解决办法
4万
查看次数

删除的文件夹不断回来

我有一个目录/opt/splunk,我似乎无法摆脱它。

root@alpha:/opt# ls -la
total 87156
drwxr-xr-x  4 root root     4096 Feb 20 15:44 .
drwxr-xr-x 23 root root     4096 Feb 19 13:29 ..
drwxrwxrwx  3 root root     4096 Feb 20 15:23 data
drwx------  4 root root     4096 Feb 20 15:45 splunk
-rw-r--r--  1 root root 89224626 Dec 16 22:47 splunk-6.2.1-245427-linux-2.6-amd64.deb
Run Code Online (Sandbox Code Playgroud)

我可以在没有错误的情况下将其删除,这似乎有效。

oot@alpha:/opt# rm -rf splunk
root@alpha:/opt# ls -la
total 87152
drwxr-xr-x  3 root root     4096 Feb 20 15:46 .
drwxr-xr-x 23 root root     4096 Feb …
Run Code Online (Sandbox Code Playgroud)

files

4
推荐指数
1
解决办法
6281
查看次数

Crontab 三重重定向

我对重定向有一个非常基本的了解,但是我遇到了一个带有我不理解的重定向的 cronjob。

00 19 * * 1-5 /apps/app/scripts/doit.sh a np cron > /apps/app/scripts/doit.log > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

我看到三个重定向。我打算在这里写下我的最佳猜测,但我无法形成全貌。如果有人帮助我理解 STDOUT 和 STDERR 术语,我将不胜感激。

我的外壳是 ksh:

:> ps -p $$
  PID TTY          TIME CMD
23947 pts/0    00:00:00 ksh
Run Code Online (Sandbox Code Playgroud)

shell ksh io-redirection

1
推荐指数
1
解决办法
234
查看次数

标签 统计

arithmetic ×1

awk ×1

debian ×1

dependencies ×1

files ×1

io-redirection ×1

java ×1

jdk ×1

ksh ×1

shell ×1