小编Ste*_*itt的帖子

使进程读取相同文件名的不同文件

我有一个读取文件的应用程序。我们称之为processname和文件~/.configuration。当processname运行时,它总是读取~/.configuration并且不能以不同的方式配置。还有其他应用程序依赖于“~/.configuration”,之前和之后,但不是在processname运行时。

在替换~/.configuration内容的脚本中包装processname是一个选项,但我最近断电(当内容被换出时),我丢失了所述文件的先前内容,所以这是不可取的。

有没有办法(也许使用与 远相关的东西LD_DEBUG=files processname?)来欺骗进程在尝试读取特定文件时读取不同的内容?在可执行文件中搜索和替换文件名有点侵入性,但应该也能工作。

我知道可以编写一个内核模块来接管open()调用(https://news.ycombinator.com/item?id=2972958),但是有没有更简单或更干净的方法?

编辑:在processname可执行文件中搜索~/.configuration 时,我发现它在读取~/.configuration之前尝试读取另一个文件名。问题解决了。

kernel system-calls files ld

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

是否可以在 less 寻呼机中滚动到文件末尾之外?

是否可以以更少的方式滚动越过底部?

理想情况下,我希望能够在终端窗口顶部看到我正在查看的文件的最后一行(屏幕的其余部分可能用波浪号 ( ~)填充,这意味着空行/这里没有任何内容)不到)。

less pager scrolling

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

apt-daily 计时器/服务——它从哪里来?

我们正在运行 Debian 9,今天遇到了 Redis 服务器(在几个实例上)重新启动的问题。

检查日志,我发现了两个未知的服务——apt-daily并且apt-daily-upgrade——都添加到了 systemd 计时器中:

root@main:/home/user# systemctl list-timers
NEXT                         LEFT          LAST                         PASSED       UNIT                         ACTIVATES
...
Tue 2018-06-19 11:50:11 UTC  4h 6min left  Tue 2018-06-19 05:03:10 UTC  2h 40min ago apt-daily.timer              apt-daily.service
Wed 2018-06-20 06:09:32 UTC  22h left      Tue 2018-06-19 06:41:51 UTC  1h 2min ago  apt-daily-upgrade.timer      apt-daily-upgrade.service
Run Code Online (Sandbox Code Playgroud)

我找不到关于这两个使用apropos和 Google 的任何信息(虽然apt-daily.service文件有一个Documentation=man:apt(8)字符串——但没有关于apt-daily)。

有人知道这里发生了什么吗?默认情况下如何启用此类自动升级?

PS 我也有 Debian 8——没有类似的。

debian apt systemd

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

ldd 的输出中的多个 GLIBC 版本是什么意思?

ldd 程序报告我的共享库需要一些丢失的共享库。(我在另一台使用 Red Hat Linux 7 的机器上构建它,并希望在另一台使用 Red Hat Linux 6 的机器上运行它。)

在下面的“版本信息”部分,libc.so.6 有三个条目;每个版本后面的括号中都有不同的版本(GLIBC_2.14、GLIBC_2.4 和 GLIBC_2.2.5)。第一个没有在机器上安装关联的共享库。

我是 Linux 新手,不明白如何解释这个输出,更不用说解决问题了。下面是命令和输出。

>ldd -v libAtlasUtilsPB.so
./libAtlasUtilsPB.so: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libAtlasUtilsPB.so)
./libAtlasUtilsPB.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by ./libAtlasUtilsPB.so)
./libAtlasUtilsPB.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./libAtlasUtilsPB.so)
    linux-vdso.so.1 =>  (0x00007fffa3dff000)
    librt.so.1 => /lib64/librt.so.1 (0x00007fea7a7b2000)
    libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fea7a4ab000)
    libm.so.6 => /lib64/libm.so.6 (0x00007fea7a227000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fea7a011000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fea79df3000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fea79a5f000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fea7ad17000)

    Version information: …
Run Code Online (Sandbox Code Playgroud)

shared-library

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

Gnome 上的 Super+Tab 和 Alt+Tab 有什么区别?

我在 Manjaro Gnome 3.28.3 上。

对于我的情况,他们做同样的事情,列出所有打开的应用程序的缩略图,如果您按SuperAlt,Tab 可以帮助您切换应用程序。

所以,我想SuperTabAltTab做不同的事情。喜欢SuperTab只在这个工作区切换应用程序?

workspaces gnome3 alt-tab

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

“可变”符号(背景一个过程)

我想知道是否有办法将&符号放在变量中并仍然使用它来将进程发送到后台。

这有效:

BCKGRND=yes
if [ "$BCKGRND" = "yes" ]; then
    sleep 5 &
else
    sleep 5
fi
Run Code Online (Sandbox Code Playgroud)

但是只用一个来完成这五行不是很酷吗?像这样:

BCKGRND='&'
sleep 5 ${BCKGRND}
Run Code Online (Sandbox Code Playgroud)

但这不起作用。如果 BCKGRND 没有设置它就可以工作 - 但是当它被设置时,它被解释为一个文字 '&' 并出错。

bash shell-script background-process variable

9
推荐指数
3
解决办法
1364
查看次数

如果需要,在晚上下载、安装和重启计算机

如何在 Ubuntu 中编写脚本,使其在晚上睡觉时下载更新并在需要重新启动时重新启动计算机?

scripting ubuntu upgrade reboot

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

如何使用来自 LKML 的补丁构建内核?

我想为 Fedora 编译一个内核,其中包含一些尚未合并的补丁,用于修复我的硬件设备。补丁位于此处

我已阅读有关为 Fedora 编译内核的指南

我不确定的是如何从邮件列表中获取补丁,然后将它们应用到我的 Linux 源代码副本中。显然我可以手动将更改复制并粘贴到代码中,但我认为有比这更好的方法。据我了解,您可以创建一个 git 补丁文件,然后您可以应用该文件。应用电子邮件中包含的此代码的最佳方法是什么?

fedora patch linux-kernel

9
推荐指数
2
解决办法
1234
查看次数

即使权限是完全开放的,也会出现权限错误

我在新 VM 上安装了 anaconda,但无法列出其内容。我可以将我的目录更改为 .../anaconda/ 但当我输入时,ls -l我得到:

ls: cannot open directory .: Permission denied
Run Code Online (Sandbox Code Playgroud)

但是,当我输入时:

sudo ls -l
Run Code Online (Sandbox Code Playgroud)

我得到

total 92
drwxrwxrwx.   2 gcw8 PosixUsers 12288 May 26 15:30 bin
drwxrwxrwx.   2 gcw8 PosixUsers 12288 May 26 15:30 conda-meta
drwxrwxrwx.   3 gcw8 PosixUsers  4096 Mar 27 16:33 docs
drwxrwxrwx.   2 gcw8 PosixUsers  4096 Mar 27 16:33 envs
drwxrwxrwx.   2 gcw8 PosixUsers  4096 Mar 27 16:33 etc
drwxrwxrwx.   6 gcw8 PosixUsers  4096 May 26 15:19 Examples
drwxrwxrwx.  41 gcw8 …
Run Code Online (Sandbox Code Playgroud)

ls permissions selinux

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

如何使用shell脚本在Linux中使用“diff”命令获取字符级别差异?

我有两个 SQL 文件,old.sql一个是new.sql.

假设old.sql包含一个包含三个字段的表,Emp_Id、Name 和 Address 以及存储在 old.sql 中的数据如下:

Insert into table1 values (101 ,"a", "xyz");
Insert into table1 values (102 ,"b", "pqr");
Run Code Online (Sandbox Code Playgroud)

然后我将“a”地址“xyz”更改为“xyz123”并将该数据保存在new.sql文件中。现在该new.sql文件包含如下数据:

Insert into table1 values (101 ,"a", "xyz123");
Insert into table1 values (102 ,"b", "pqr");
Run Code Online (Sandbox Code Playgroud)

当我使用这样的diff命令时:

diff old.sql new.sql
Run Code Online (Sandbox Code Playgroud)

它给出了逐行差异,但我只想要更新的数据,如 xyz123。

diff shell-script

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