我有一个脚本,它将提取文件以检查到一个临时文件夹,然后调用 nautilus。
我试图让脚本等待 Nautilus 退出,然后删除临时文件夹。但是,在调用 Nautilus 后会立即删除该文件夹。
我知道 Nautilus 是控制桌面的 Gnome 的子窗口。但是,我试图找出一种方法来调用 Nautilus 的新实例或解决方法。
剧本:
#/bin/bash
tempdir=$(mktemp -d)
unzip ~/document.odt -d $tempdir
nautilus $tempdir
# waitfor nautilus to exit
# workaround
zenity --info --title="Find Icons" --text="Click OK to exit" 2>/dev/null
rm -r $tempdir
Run Code Online (Sandbox Code Playgroud)
目前我正在使用Zenity作为一种解决方法,通过向用户提供提示来使脚本等待。我正在尝试删除这个额外的步骤,让脚本识别出 Nautilus 窗口已关闭,然后自动完成。
跟踪的PID,并从shell脚本作品与Xenial内核杀死它,我在Ubuntu 16.04.1 LTS的实时系统,并在最新的安装系统与Ubuntu 16.04 LTS(和Xenial内核)。
#!/bin/bash
echo "Starting Nautilus"
nautilus --no-desktop ~/Downloads & pid=$!
echo "pid=$pid"
ps -A|grep "$pid"
read -p "Press Enter when you are ready to kill the Nautilus window"
kill "$pid"
sync
echo "Checking that the process is gone"
ps -A|grep "$pid"
Run Code Online (Sandbox Code Playgroud)
编辑:
它可以工作,当像这样被杀死时,但是当用x控制按钮关闭时,该进程仍然存在,这是 Nautilus 的问题。
但是,如果您使用 Thunar 而不是 Nautilus,则当使用x按钮关闭窗口时,该进程将被终止。所以我建议为这个任务切换文件浏览器,
#!/bin/bash
echo "Starting Thunar"
thunar ~/Downloads
echo "Checking that the process is gone"
ps -A|grep "thunar"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
382 次 |
| 最近记录: |