放弃、背景、转储为空脚本

放弃、背景、转储为空脚本

我曾经有一个脚本(很久以前),它允许我在终端中执行任何操作,并会神奇地放弃并在后台运行,同时将任何输出转储为空。它甚至可能没有执行任何操作……我不记得了。我把它放在 /usr/local/bin 或 /usr/bin/ 中,它被命名为“ds”(我知道这个名字与它无关,但我想也许你们中的一些人可能做过和我当年一样的事情)。

基本上,为了完全在后台执行命令而不占用终端窗口,我只需输入:

ds command

或者

ds sudo command

我不记得我在哪里找到它,也不记得它是否是我自己创造的。它非常巧妙,所以我猜我是在别处找到它的。:)

有人可以帮忙再次创建这样的脚本吗?

短暂性失眠!

答案1

我不确定您之前设置了什么,但您可以将stderr和输出stdout/dev/null,然后disown处理:

command > /dev/null 2>&1 & disown
$ tail -f /var/log/messages > /dev/null 2>&1 & disown
[1] 12345
$

不要混淆&这里&&. &在后台运行命令,同时disown 将后台与终端进程稍微分离一下。您可以设置 BASH 脚本、函数或别名来将您的命令包装在类似的东西中。

答案2

我的天哪!我在我的另一台 *nix 机器上找到了我正在寻找的东西,我会把它复制到真正需要它的机器上。位于“/usr/local/bin/ds”

如果有人需要的话,这里有一份脚本的副本:

#!/bin/sh

if test -t 1; then
  exec 1>/dev/null
fi

if test -t 2; then
  exec 2>/dev/null
fi

"$@" &

现在我看了一下,我不能完全确定这是否会放弃该进程,因为它似乎只是将命令作为后台进程来执行。有什么想法吗?

相关内容