在处理另一个程序时运行脚本

在处理另一个程序时运行脚本

我想知道如何在另一个工作区工作时在不同的工作区中打开脚本。该脚本每 2 秒打开不同的网页,打开所有网页持续 2 分钟。必须等待完成所有过程是令人恼火的。当该过程正在运行时,我无法执行任何操作,因为每两秒就会打开另一个网页,并且屏幕会聚焦在该新网页上。

这是脚本的示例:

#!/bin/bash

# Defining the screen size
a="$(xrandr | fgrep '*' | awk -F ' ' '{print $1}' | awk -F 'x' '{print $1}')"
b="$(xrandr | fgrep '*' | awk -F ' ' '{print $1}' | awk -F 'x' '{print $2}')"

# First tab
opera --new-window
sleep 1;
wmctrl -r :ACTIVE: -e 1,$((0)),$((0)),$((a)),$((b)) ; 
sleep 2;

# Second tab
opera --new-window
sleep 2;

# Third tab
opera --new-window
sleep 2;

...

# n tab
opera --new-window

我尝试使用 wmctrl 命令将每个新的 Opera 选项卡发送到第二个工作区......

wmctrl -s 1 #Switches to workspace 1
opera --new-window &
sleep 2;

...但是屏幕将焦点放在该工作区中,我无法在第一个工作区中工作。

其他无效的解决方案是将我的工作区保留在工作区 1 中,并在很短的时间内打开工作区 2 中的新选项卡。我是说:

wmctrl -s 0; # The workspace I am working in.
wmctrl -s 1; opera --new-window & sleep 0.01; #Change to workspace 2 and open the new tab in a short time.
wmctrl -s 0; # Change to workspace 1.
sleep 2; 
wmctrl -s 1; opera --new-window & sleep 0.01; 
wmctrl -s 0 #... and so on. 

这是没有效果的。我注意到工作区之间的变化。

因此,我们的想法是在一个程序中工作,同时脚本在其他工作区中执行。

我使用的是:Xubuntu 14.04。桌面环境Xfce。窗口管理器 Xfwm4。

有任何想法吗?

答案1

您可以启动虚拟 X 服务器并将脚本环境的 $DISPLAY 变量指向该服务器(可能在配置对该 X 服务器的访问之后)。

答案2

您可以通过在命令后添加 n & 来强制命令在后台运行。

当您执行此操作时,有时输出仍会打印在您的会话中。如果想让脚本隐藏在后台运行,可以使用nohup。此外,如果您断开连接,nohup 将使进程保持运行。这种情况下的输出将被打印到 nohup.out

答案3

我发现“screen”命令对于单独运行终端程序很有帮助。

如何使用Linux屏幕|拉凯德

相关内容