我有一个像这样链接的可执行文件:
$ ldd a.out
libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x00007f4881f56000)
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f4881cfb000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f4881965000)
librt.so.1 => /lib64/librt.so.1 (0x00007f488175d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4881540000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4881239000)
.
.
Run Code Online (Sandbox Code Playgroud)
其中 libcrypto 和 libssl 库是 openssl 1.0.0-fips 库。我想尝试使用 1.0.1 库,因此我将它们构建在我的主目录中。有没有办法在a.out没有很多痛苦的情况下重新链接我的新 openssl 库?我想避免
a.out(因为构建工具非常复杂)有可能在这里做我希望的事情吗?
我正在wget处理大文件(超过 100GB),然后将我的 md5sum 与存储库中发布的总和进行比较。信不信由你,md5sum在这种大小的文件上运行需要相当多的时间,所以我想在下载的同时获得总和。
做到这一点的最佳方法是什么?我没有看到wget在下载期间计算 MD5的选项(令人惊讶)所以我想使用tee将是要走的路?!
两个窗口,同一用户,带有 bash 提示。在 window-1 中输入:
$ mkfifo f; exec <f
Run Code Online (Sandbox Code Playgroud)
所以 bash 现在试图从映射到命名管道的文件描述符 0 中读取f。在窗口 2 中键入:
$ echo ls > f
Run Code Online (Sandbox Code Playgroud)
现在 window-1 打印一个 ls 然后 shell 死了。为什么?
下一个实验:再次打开 window-1 exec <f。在窗口 2 中键入:
$ exec 3>f
$ echo ls >&3
Run Code Online (Sandbox Code Playgroud)
在上面的第一行之后,window-1 唤醒并打印提示。为什么?在上面的第二行之后,window-1 打印ls输出并且 shell 保持活动状态。为什么?事实上,现在在window-2中,echo ls > f并没有关闭window-1外壳。
答案一定与window-2 中引用命名管道的文件描述符 3的存在有关?!
这是 Ubuntu 9.04, 2.6.28-11-server, 32bit x86
$ cat test.c
main() { int *dt = (int *)0x08049f18; *dt = 1; }
$ readelf -S ./test
...
[18] .dtors PROGBITS 08049f14 000f14 000008 00 WA 0 0 4
...
$ ./test
Segmentation fault
$
Run Code Online (Sandbox Code Playgroud)
对于初学者:gcc.dtors在 elf 可执行文件中创建了一个析构函数段,在main()退出后调用。这个表长期以来一直是可写的,在我的情况下它看起来应该是(见readelf输出)。但是尝试写入表会导致段错误。
我意识到最近出现了一种面向只读 .dtors、plt 的运动,但我不明白的是readelfsegfault 和 segfault之间的不匹配。
假设我F在 Linux ext4 文件系统上有一个稀疏文件,并且进程P1正在写入不相交的 50% 子集,F而P2写入F. 我想在文件“增长”时尽量减少碎片。(我将“grows”放在引号中,因为该文件是作为稀疏文件预先分配的,但是随着块被写入,它们会用实际数据填充幻像块。)
我意识到P1并且P2正在并行运行,一个可能会领先另一个,但除此之外,最好让P1写入块 1,3,5,7,... 而P2写入 2,4,6,... ? 还是P1写 1,2,3,4,...n/2 和P2写 n/2+1, ...., n更好?
我/proc/cpuinfo说我的处理器是 800Mhz,当我知道它实际上是 2.8Ghz 时。这是由于空闲节流造成的,空闲时 CPU 时钟会减慢以节省电量。
Linux中有没有办法找到真正的cpu速度?
是否有可能禁用/proc伪文件系统,以防止w,ps,top,等等,从展示哪些其他用户在做什么?当然,我仍然希望“其他一切”都能正常工作。有没有可行的方法来做到这一点?