当我在 Vim 中打开文件时,我看到奇怪的^M字符。
不幸的是,世界上最受欢迎的搜索引擎对查询中的特殊字符表现不佳,所以我在这里问:
这是什么^M性格?
怎么可能到了那里?
我该如何摆脱它?
我有时会在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一旦子进程终止并继续处理,我能否以某种方式阻止停止处理更多输入?
我正在使用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 文件。
我正在遵循有关如何使用 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没有这样的信号。
这只是一个错字或错误,还是真的有什么成就?
我刚刚dot用一个输入文件执行(一个绘制有向图的程序),该文件太大以至于无法在合理的时间内呈现。
我的整个系统都僵住了。我几乎不能使它与文本控制台Ctrl+ Alt+F1杀dot,但花了几分钟的时间。
为什么系统允许这样的事情?为什么它提供一个非关键程序,例如dot系统的 99%,而使用剩余的 1% 来保持响应?
是否可以确定添加到 的私钥的密码短语ssh-agent?
我正在思考具有 root 权限的人在添加密钥后试图找出我的密码短语(所以我的意思不是在键入密码时进行键盘记录)。
我想在网站上显示 Debian 机器的一个接口的当前网络利用率(带宽使用情况)。它不应该非常复杂或精确,只是一个简单的数字,例如“52 Mbit/s”。
典型的网络带宽监视器,例如iftop让我无法简单地提取这样的值。
我怎样才能最好地检索它?
例如,我想我可能会/proc/net/dev每隔几分钟解析一次。不确定这是否真的是最好的方法。
我有以下问题:在每台运行 Postgresql 的机器上,都有一个特殊的用户postgres。此用户具有对数据库服务器的管理访问权限。
现在我想编写一个 Bash 脚本,它使用 psql 作为用户postgres执行数据库命令(psql 应作为用户postgres执行,而不是脚本)。到目前为止,这不是问题:我可以以用户postgres 的身份运行脚本。
但是,我想将 psql 的输出写入postgres没有写访问权限的目录中的文件。
我怎样才能做到这一点?
我想过在脚本本身中更改 EUID,但是:
psql -U postgres -c "<command>" > file?一直困扰我一段时间的一件事是:
% which halt
/sbin/halt
% file /sbin/halt
/sbin/halt: symbolic link to `reboot'
Run Code Online (Sandbox Code Playgroud)
但是,执行sudo halt当然不会重新启动系统。这是为什么?
例如,还有其他几个程序以这种方式工作pdflatex。
我想跟踪一个 shell 脚本以进行调试,而不必修改其源代码(例如,更改 shebang 或set -x在开头插入 a )。它是一个 dpkg postinst 脚本,所以实际上并不是我自己在 shell 上调用的。
希望为此找到一个环境变量,我在手册页中搜索了dash,但找不到任何内容。
有没有办法做到这一点?
bash ×2
linux ×2
shell-script ×2
signals ×2
xargs ×2
dash ×1
executable ×1
filenames ×1
io ×1
kill ×1
networking ×1
parallelism ×1
password ×1
permissions ×1
process ×1
scheduling ×1
security ×1
shell ×1
ssh ×1
symlink ×1
trap ×1
vim ×1