小编Chr*_*urm的帖子

什么是“^M”,我该如何摆脱它?

当我在 Vim 中打开文件时,我看到奇怪的^M字符。

不幸的是,世界上最受欢迎的搜索引擎对查询中的特殊字符表现不佳,所以我在这里问:

  • 这是什么^M性格?

  • 怎么可能到了那里?

  • 我该如何摆脱它?

vim special-characters

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

如何让 `xargs` 忽略孩子的退出并继续进一步处理

我有时会在xargs一夜之间运行很长时间的工作,并且在早上发现xargs中间某个地方死了真的很烦人,例如因为在一个特殊情况下的分段错误,就像今晚发生的那样。

即使一个xargs孩子被杀死,它也不会处理任何更多的输入:

控制台 1:

[09:35:48] % seq 40 | xargs -i --max-procs=4 bash -c 'sleep 10; date +"%H:%M:%S {}";'
xargs: bash: terminated by signal 15
09:35:58 3
09:35:58 4
09:35:58 2
<Exit with code 125>
Run Code Online (Sandbox Code Playgroud)

控制台 2:

[09:35:54] kill 5601
Run Code Online (Sandbox Code Playgroud)

xargs一旦子进程终止并继续处理,我能否以某种方式阻止停止处理更多输入?

kill signals xargs

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

如何阻止 xargs 错误地合并多个进程的输出?

我正在使用xargs选项--max-args=0(或者-P 0)。

然而,进程的输出被合并到stdout流中而不考虑适当的行分离。所以我经常会以这样的行结束:

<start-of-line-1><line-2><end-of-line-1>
Run Code Online (Sandbox Code Playgroud)

当我在整个输出的模式中使用egrepwith 时^xargs这弄乱了我的结果。

有没有办法强制xargs按顺序写入进程输出(任何顺序,只要一个进程的输出是连续的)?

或者其他一些解决方案?

编辑:有关用例的更多详细信息:

我想从不同的主机下载和解析网页。由于每个页面都需要大约一秒钟的时间来加载,并且有几十个页面我想并行化请求。

我的命令具有以下形式:

echo -n $IPs | xargs --max-args=1 -I {} --delimiter ' ' --max-procs=0 \
wget -q -O- http://{}/somepage.html | egrep --count '^string'
Run Code Online (Sandbox Code Playgroud)

我使用 bash 而不是 Perl 之类的东西,因为主机 IP($IPs 变量)和其他一些数据来自包含的 bash 文件。

process io xargs parallelism

22
推荐指数
2
解决办法
7100
查看次数

陷阱命令中的信号 0 是什么?

我正在遵循有关如何使用 ssh-agent 设置无密码 SSH 身份验证的指南

要启动 ssh-agent,作者建议在 中使用以下代码.bash_profile

SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
    eval `$SSHAGENT $SSHAGENTARGS`
    trap "kill $SSH_AGENT_PID" 0
fi
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它会捕获信号 0。根据man 7 signal没有这样的信号。

这只是一个错字或错误,还是真的有什么成就?

bash signals trap

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

为什么系统会变得无响应?

我刚刚dot用一个输入文件执行(一个绘制有向图的程序),该文件太大以至于无法在合理的时间内呈现。

我的整个系统都僵住了。我几乎不能使它与文本控制台Ctrl+ Alt+F1dot,但花了几分钟的时间。

为什么系统允许这样的事情?为什么它提供一个非关键程序,例如dot系统的 99%,而使用剩余的 1% 来保持响应?

scheduling

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

ssh-agent 会存储我的密码吗?

是否可以确定添加到 的私钥的密码短语ssh-agent

我正在思考具有 root 权限的人添加密钥试图找出我的密码短语(所以我的意思不是在键入密码时进行键盘记录)。

security password ssh

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

我应该如何确定当前的网络利用率?

我想在网站上显示 Debian 机器的一个接口的当前网络利用率(带宽使用情况)。它不应该非常复杂或精确,只是一个简单的数字,例如“52 Mbit/s”。

典型的网络带宽监视器,例如iftop让我无法简单地提取这样的值。

我怎样才能最好地检索它?

例如,我想我可能会/proc/net/dev每隔几分钟解析一次。不确定这是否真的是最好的方法。

linux networking

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

如何以降低的权限运行脚本的一部分?

我有以下问题:在每台运行 Postgresql 的机器上,都有一个特殊的用户postgres。此用户具有对数据库服务器的管理访问权限。

现在我想编写一个 Bash 脚本,它使用 psql 作为用户postgres执行数据库命令(psql 应作为用户postgres执行,而不是脚本)。到目前为止,这不是问题:我可以以用户postgres 的身份运行脚本。

但是,我想将 psql 的输出写入postgres没有写访问权限的目录中的文件。

我怎样才能做到这一点?

我想过在脚本本身中更改 EUID,但是:

  1. 我找不到在 Bash 脚本中更改 EUID 的方法
  2. 使用类似的东西时如何更改 EUID
    psql -U postgres -c "<command>" > file

linux bash permissions shell-script

7
推荐指数
2
解决办法
4552
查看次数

为什么有些符号链接会影响程序行为?

一直困扰我一段时间的一件事是:

% which halt
/sbin/halt
% file /sbin/halt
/sbin/halt: symbolic link to `reboot'
Run Code Online (Sandbox Code Playgroud)

但是,执行sudo halt当然不会重新启动系统。这是为什么?

例如,还有其他几个程序以这种方式工作pdflatex

executable symlink filenames

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

我可以在不修改源代码的情况下跟踪破折号脚本吗?

我想跟踪一个 shell 脚本以进行调试,而不必修改其源代码(例如,更改 shebang 或set -x在开头插入 a )。它是一个 dpkg postinst 脚本,所以实际上并不是我自己在 shell 上调用的。

希望为此找到一个环境变量,我在手册页中搜索了dash,但找不到任何内容。

有没有办法做到这一点?

shell dash shell-script

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