在 Windows 中我只需这样做。
@echo off
for /L %%n in (1,1,10) do start "" "C:\Program Files\Mozilla Firefox\firefox.exe" -P user%%n -no-remote imacros://run/?m=we.js ping 192.168.1.1 -n 1 -w 1500 > NUL
在 ubuntu 中有一些等效项可以运行不同的配置文件,我的 Firefox 的路径是,/opt/firefox/firefox
并且需要循环来选择不同的用户。
重要。我需要同时运行所有配置文件。
另一个问题是。在 ubuntu 中 Firefox 中的配置文件路径在哪里。在 Windows 中,appdata 中很简单,但在 ubuntu 中似乎更复杂。有人可以告诉我我的配置文件路径在哪里吗?
答案1
我不太理解批处理,但猜测其含义在 bash 中应该是这样的:
for n in {1..10}
do
/opt/firefox/firefox -P user$n -no-remote imacros://run/?m=we.js ping 192.168.1.1 -n 1 -w 1500 &> /dev/null &
done
{n..m}
是序列形式Bash 中的括号扩展。您还可以使用 C 风格的 for 循环:for ((n = 1; n <= 10; n++)) do ... done
$n
是如何获取变量的值n
。&> /dev/null
将错误和正常输出重定向到/dev/null
特殊设备,有效地丢弃它们- 它
&
本身会将命令发送到后台,因此脚本不再等待命令完成后再继续执行下一个命令。
您的 Firefox 配置文件可能位于 中~/.mozilla/firefox/
。
(这ping
真的是 Firefox 论点的一部分吗?)
答案2
默认的 Unix shell 不会为你提供所有正在使用的功能。以下是你可以使用基本 shell 执行的操作:
痕迹
@echo off
默认情况下,shell 脚本是静默的,因此默认情况下处于“关闭”状态。打开跟踪的标志是-x
( set -x
)。
循环 1 至 10
for /L %%n in (1,1,10)
这可以在 Unix shell 脚本中使用变量和 来完成while
。较新的 shell(例如bash
)提供了编写此类脚本的方法,但如果您想编写一个可以在(几乎)所有 Unix 机器上运行的脚本,那么您需要坚持使用基本功能:
#!/bin/sh
n=1
while test $n -le 10
do
...
n=`expr $n + 1`
done
这...
是要执行 10 次的脚本。该expr
命令用于在每次迭代时将计数器增加一。请注意空格,它们很重要(而不是缩进,尽管我建议您保持适当的缩进)。
正如 @Olorin 提到的,该expr
命令也可以替换为:
n=$(($n + 1))
将 Firefox 作为后台进程启动
start "" "C:\Program Files\Mozilla Firefox\firefox.exe" &
-P user%%n -no-remote imacros://run/?m=we.js
(我把这一行拆开了,在 DOS 脚本中,该脚本要求&
在行末有一个 )。
在这里,您使用“start”启动一个程序,这意味着它在后台运行。然后您指定参数,其中一个参数使用该计数器n
。假设 Firefox 在您的路径中(如果您安装了默认版本,它将在您的路径中),那么您不需要完整路径,只需以下内容:
firefox -P user$n -no-remote imacros://run/?m=we.js &
这是一个sh
脚本,结尾&
用于在后台启动该进程。这意味着命令启动后,shell 立即返回。
您还设置了一个特殊变量,用于提供新进程的 PID。如果您想要发送信号或只是想知道进程是否仍在运行,这可能会很有用。(即——FIREFOX_PID=$!
不过,就您而言,您将启动其中 10 个……仅一个这样的变量对您不起作用。)
发送一个静默 ping,超时时间为 1.5 秒
ping 192.168.1.1 -n 1 -w 1500 > NUL
这个 ping 看起来像是一行单独的代码。 是-n 1
重复一次, 是-w 1500
指定超时。-w
在 Linux 上, 是一一对应的。-n
但是, (number) 必须替换为-c
(count)。 最后,NUL
特殊文件可以用 替换/dev/null
。
ping 192.168.1.1 -c 1 -w 1500 > /dev/null
注意:为了使 ping 安静,您还可以使用-q
如下方法:
ping 192.168.1.1 -q -c 1 -w 1500
当然,如果ping
是 Firefox 命令行的一部分(不太可能),那么您可能根本不应该转换它。