我的问题与此类似。 在 nohup 中使用别名
我花了很多时间自定义我包含在我的 .bashrc 中的函数,我希望它使用 nohup 运行,因为我想以这种方式多次运行命令。
for i in `cat mylist`; do nohup myfunction $i 'mycommand' & done
有小费吗?
我的问题与此类似。 在 nohup 中使用别名
我花了很多时间自定义我包含在我的 .bashrc 中的函数,我希望它使用 nohup 运行,因为我想以这种方式多次运行命令。
for i in `cat mylist`; do nohup myfunction $i 'mycommand' & done
有小费吗?
nohup
您可以通过ing a使用函数(不是别名)来执行此操作bash -c
(这与运行外部 bash 脚本基本相同)。
为了使其工作,您需要将您的功能标记为exported
:
# define the function
echo_args() {
printf '<%s> ' "$@"
printf "\n"
}
# mark it as exported
declare -fx echo_args
# run it with nohup
nohup bash -c 'echo_args "$@"' bash_ "an argument" "another argument"
参数bash_
为子shellnohup
提供了一个“名称” bash -c
;也就是说,它变成了$0
子shell中的值。它将被添加到错误消息(如果有的话)之前,所以我尝试使用一些有意义的东西。
nohup
不适用于函数。您需要创建一个包装并执行该函数的 shell 脚本。然后你可以运行shell脚本nohup
像这样:
测试.sh
#!/bin/bash
function hello_world {
echo "hello $1, $2"
}
# call function
hello_world "$1" "$2"
chmod +x test.sh
然后在你的for
循环中调用它:
for i in `cat mylist`; do
nohup ./test.sh $i 'mycommand' &
done