Expect 工作正常,但只在前台,为什么?

Expect 工作正常,但只在前台,为什么?

我使用这个脚本来更新我的仓库 slackware(生成 asc、txt 等)

http://slackware.org.uk/people/alien/tools/gen_repos_files.sh

我已经用我的期望脚本“自动化”了它

#!/bin/bash
set -e

funct()
{
#script update repo http
pass3="proot"

    expect -c "
    spawn /usr/local/bin/gen_repos_files.sh -l /tmp/changelog
    expect \"Enter your GPG passphrase:  \"
    send \"$pass3\n\"
    interact
    "

find /srv/httpd/htdocs/repos/slackware-mg/ -type f |xargs chmod 644  -v

}

while inotifywait -qqre modify /http/srv/httpd/htdocs/repos/slackware-mg; do funct; done

工作完美,但只有当我从 shell 启动它时,如果我从 rc.local 或 crontab 运行它。它不起作用,第二个脚本(gen_repos.sh)仍然处于睡眠状态。为什么?

答案1

找到解决方案,nohup。

例如

nohup /usr/local/bin/aggiornailrepo.sh&

在 rc.local 上

并且不要忘记 inotifywait 上的 -o /dev/null 否则没有 shell 将无法工作

相关内容