【问题标题】:Disown a function from a script? [duplicate]从脚本中删除一个函数? [复制]
【发布时间】:2017-11-17 12:28:00
【问题描述】:

我不确定这是否真的可行,但也许有人对我如何做类似的事情有一些建议:

#!/bin/bash

dissed() {
    for i in {1..10}
    do
        sleep 5
        echo "$(date)"
    done
}

/usr/bin/screen -S disowned -d -m dissed & disown -h; 

screen -ls

echo "done."

当然这不起作用,因为我假设脚本结束时函数会被终止。我知道当我替换调用“dissed”函数的实际.sh 文件时它会起作用,但这是我想要避免的。

有什么方法可以取消父级中的函数或下标吗?

【问题讨论】:

标签: linux bash macos shell


【解决方案1】:

从 bash 脚本中分离进程:

nohup ./process & 例如,如果您使用 SIGINT 停止 bash 脚本,则该过程不会受到干扰,并且会继续正常执行。 stdout & stderr 将被重定向到一个文件:nohup.out。

如果您希望执行分离的命令,同时能够在终端中看到输出,请使用 tail:

TEMP_LOG_FILE=tmp.log

"$TEMP_LOG_FILE" nohup ./process &> "$TEMP_LOG_FILE" & tail -f "$TEMP_LOG_FILE" &

【讨论】:

  • 这会调用另一个脚本文件,不是吗?
猜你喜欢
  • 1970-01-01
  • 2012-07-24
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 2017-03-30
  • 2020-07-17
  • 2018-11-08
相关资源
最近更新 更多