有没有人理解处理时间、使用中间文件或使用管道时的巨大差异?我在新的 debian 挤压服务器上使用标准工具将 tiff 转换为 pdf。执行此操作的标准方法是先转换为 ps。
无管:
root@web5:~# time tiff2ps test.tif > test.ps
real 0m0.860s
user 0m0.744s
sys 0m0.112s
root@web5:~# time ps2pdf13 -sPAPERSIZE=a4 test.ps > test.pdf
real 0m0.667s
user 0m0.612s
sys 0m0.060s
Run Code Online (Sandbox Code Playgroud)
配管:
root@web5:~# time tiff2ps test.tif | ps2pdf13 -sPAPERSIZE=a4 - > test.pdf
real 1m6.098s
user 0m15.861s
sys 0m50.9
Run Code Online (Sandbox Code Playgroud)
在最后一条命令期间,gs 进程始终处于 100%。
更新:
这是 ps 生成的 strace 输出:
root@web5:~# strace tiff2ps test.tif > test.ps
execve("/usr/bin/tiff2ps", ["tiff2ps", "test.tif"], [/* 28 vars */]) = 0
brk(0) = 0x1395000
access("/etc/ld.so.nohwcap", F_OK) …Run Code Online (Sandbox Code Playgroud) 我正在运行一个 shell 脚本,它将数据从一个进程传输到另一个进程
process_a | process_b
Run Code Online (Sandbox Code Playgroud)
有谁知道一种方法来找出两个程序之间传递了多少字节?目前我能想到的唯一解决方案是编写一个小的 c 程序,从标准输入读取,写入标准输出并计算所有传输的数据,将计数存储在环境变量中,例如:
process_a | count_bytes | process_b
Run Code Online (Sandbox Code Playgroud)
有没有人有更简洁的解决方案?
与之前的许多问题类似,我发现自己正在运行一项我希望在屏幕上运行的工作。我被迫否认这个过程,因为我需要断开连接。现在我已经重新连接,我看到进程仍在运行。我怎样才能“回收”这个过程,以便我可以看到它的输出并给它输入?
这个问题与仅仅将正在运行的进程移动到屏幕不同,因为它涉及重新打开丢失的 stdin/out/err 句柄。
我有一系列管道式 grep、awks 和 seds,它们生成一个数字列表,每行一个。像这样的东西:
1.13
3.59
1.23
Run Code Online (Sandbox Code Playgroud)
我怎样才能把它传递给输出平均值、最大值和最小值的东西?
我写了一个 nagios 脚本的一半,我对 SSH 感到烦恼。
根据手册页:
-q Quiet mode. Causes all warning and diagnostic messages to be
suppressed.
Run Code Online (Sandbox Code Playgroud)
然而,如果我启用了 quiet 标志然后传递了一个无效的端口,我仍然会收到一个错误:
$ ssh user@localhost -q -p test
Bad port 'test'
Run Code Online (Sandbox Code Playgroud)
这是一个问题,因为这将使该消息成为第一行,而这正是 Nagios 抓取的内容。!= 0从 ssh 获取退出代码后,我需要输出类似“警告|SSH 错误”的内容,但我可以输出的第一行将是第 2 行。
我怎样才能让 SSH 真正安静下来?
注意:我不确定是在 serverfault、超级用户还是 stackoverflow 上发布这个问题。我选择了 serverfault,因为用户群可能对 cli SSH 和 cli 脚本解决方法最有经验。
commandsudo -i和 和有sudo su -什么不一样?
他们是一样的吗?
如果我像这样添加两个IP:
ip addr add 1.1.1.1/24 dev eth2
ip addr add 1.1.1.2/24 dev eth2
Run Code Online (Sandbox Code Playgroud)
然后我尝试删除这样的一个:
ip addr del 1.1.1.2/24 dev eth2
Run Code Online (Sandbox Code Playgroud)
两个IP都将被删除,我不知道如何处理。
有谁知道如何解决它?
我正在尝试设计一个程序,当某个(非周期性)事件发生时发送文本。现在,我想要一个脚本来查找此事件何时发生,然后安排一个(类似 cron 的)作业,该作业将在该事件发生之前发送文本。
更具体的示例如下所示:
脚本 A 运行并检测事件的下一次
脚本 A 使用 ??? 安排脚本 B 在 $time 运行
在 $ 时间,???调用发送文本的脚本 B。
问题是,事件可能发生在 11 天内的随机时间,而且只会发生一次。Cron 似乎不适合这个——我不希望这个工作运行不止一次。
所以我猜(简而言之),是否有一个实用程序可以提供非周期性脚本的延迟执行?
我正在尝试为 ubuntu 机器上的所有用户提高打开文件描述符的最大值。
这个问题有点像这个问题的后续。
即使需要 pam_limits.so,ulimit 也不会读取打开的文件描述符limits.conf 设置
除了我在limits.conf中添加了所需的“root”条目
这是条目
* soft nofile 100000
* hard nofile 100000
root soft nofile 100000
root hard nofile 100000
Run Code Online (Sandbox Code Playgroud)
相关的pam_limits.so行在 /etc/pam.d/ 中的所有相关文件中已取消注释,并fs.file-max已在 /etc/sysctl.conf 中正确设置
然而,我仍然看到
abc@machine-2:/etc/pam.d$ ulimit -n
1024
Run Code Online (Sandbox Code Playgroud)
重启后。
可能是什么问题呢?
我的默认 shell 是 /bin/sh 并且我不能使用 chsh 来更改我的默认 shell,因为我的机器上的用户是通过某种分布式身份验证方案进行身份验证的。
题
有没有办法在 Linux 上完全重置 PostgreSQL 安装,使其与我安装时的状态相同?
主意
我考虑过
rm -rf /var/lib/pgsql/*
rm -rf /var/lib/pgsql/backups/*
rm -rf /var/lib/pgsql/data/*
Run Code Online (Sandbox Code Playgroud)
但也许这不是推荐的方法。
目的
这对于摆脱以前使用过它的程序的遗留物会很方便。