我想在后台相继运行两个 shell 脚本,最好也使用nohup
.
我从
% nohup a.sh &
Run Code Online (Sandbox Code Playgroud)
a
这在后台运行。
% nohup a.sh && nohup b.sh
Run Code Online (Sandbox Code Playgroud)
运行a
然后b
(如果a
成功)
但如何在后台启动最后一个组合呢?
如果我做
% nohup a.sh && nohup b.sh &
Run Code Online (Sandbox Code Playgroud)
a
将在前台运行,阻止提示符,然后b
在后台启动,将控制权返回给提示符。
% nohup a.sh & && nohup b.sh &
Run Code Online (Sandbox Code Playgroud)
这给出了一个错误:zsh: parse error near '&&'
如何在后台启动两个进程?
我有一个大文件(2-3 GB,二进制,未记录格式),我在两台不同的计算机上使用它(通常我在桌面系统上使用它,但当我旅行时,我把它放在我的笔记本电脑上)。我使用 rsync 来回传输这个文件。
我不时对这个文件进行小的更新,更改不到 100 kB。这发生在两个系统上。
据我所知,rsync 的问题在于,如果它认为文件在源和目标之间发生了变化,它会传输完整的文件。在我的情况下,当文件的一小部分发生更改时,感觉就像是在浪费时间。我设想了一个协议,其中源和目标上的传输代理首先校验整个文件,然后比较结果。当他们意识到整个文件的校验和不同时,他们将文件拆分为 A 和 B 两部分,分别对它们进行校验。
啊哈,B 在两台机器上是一样的,我们忽略那一半。现在它将 A 拆分为 A1 和 A2。好吧,只有A2发生了变化。将 A2 拆分为 A2I 和 A2II 并进行比较等。以递归方式执行此操作,直到找到例如三个部分,每个部分均为 1 MB,在源和目标之间存在差异,然后仅传输这些部分并将它们插入目标文件中的正确位置。今天,有了快速的 SSD 和多核 CPU,这种并行化应该非常高效。
所以我的问题是,今天是否有任何工具可以像这样(或以我无法想象但具有类似结果的另一种方式)工作?
已发布澄清请求。我主要使用 Mac,所以文件系统是 HFS+。通常我这样启动 rsync
rsync -av --delete --progress --stats
- 在这种情况下,我有时使用 SSH,有时使用 rsyncd。当我使用 rsyncd 时,我是这样启动的rsync --daemon --verbose --no-detach
。
第二个说明:我要求使用一个工具来传输存在于两个位置的文件的增量,并且/或者 rsync 是否真的提供了这个。我对 rsync 的经验是它可以完整传输文件(但现在有一个答案可以解释这一点:rsync 需要一个 rsync 服务器才能仅传输增量,否则(例如,使用 ssh-shell)它会传输整个文件文件,但发生了很大变化)。
我运行常规Chrome和Chrome Canary(从现在开始,使用 Canary)。有时我想杀死Canary的所有子进程Google Chrome Helper。问题是它们与常规Chrome的子进程具有相同的名称,因此会杀死Canary和Chrome的子进程。killall "Google Chrome Helper"
如何使用“oneliner”或类似命令杀死 Canary 的所有子进程而不杀死Chrome的同名子进程?
Mac OS X
我在获取grep
找到匹配项的文件名时没有问题,但是,我正在搜索的文件层次结构中的某些内容需要永远(数小时)来搜索(它是 2000 个文件中的 1.4 GB 数据) SSD 所以它不应该花那么长时间),我想知道什么。因此,我想要某种详细的输出,其中 grep 在处理它们时列出每个文件。
如何才能做到这一点?
在 Mac 上使用 BSD grep。
我正在手册页上阅读此内容:
[-n number-to-stat[:max-size[:min-size][:num-directories[:chunk-size]]]]
Run Code Online (Sandbox Code Playgroud)
我将其解释为-n
可选,但如何指定num-directories
?
最好我不想为number-to-stat, max-size, min-size
和输入任何内容chunk-size
,只需给出一个值num-directories
- 我该如何表达?