我需要启动 17 个.jar
文件,每次启动一个,每个文件之间有 7 秒的延迟。3 小时后,我需要终止所有java
进程,但只终止那些以 Surge 用户身份运行的进程。3 小时后,我需要重复此过程。
因此我在 Windows 批处理文件中看到了类似的内容。
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
timeout /t 10800
taskkill /F /IM java.exe /T
timeout /t 10800
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
start java -Xmx4G -jar C:\Users\surge\Downloads\cooljar.jar
timeout /t 7
现在我需要 Linux shell 脚本格式的它。
所以我一直在使用
nohup java -jar cooljar.jar && nohup java -jar cooljar.jar && nohup java -jar cooljar.jar.
但这并不意味着每次发射之间都有延迟。
编辑:抱歉,我没有提到这一点,罐子有不同的参数。
编辑@Byte Commander:我正在尝试您的示例。但它不起作用。
#!/bin/bash
launch_jars() {
java -jar cooljar.jar -n 1
sleep 7
java -jar cooljar.jar -n 2
sleep 7
java -jar cooljar.jar -n 3
sleep 7
java -jar cooljar.jar -n 4
sleep 7
java -jar cooljar.jar -n 5
sleep 7
}
while 1 ; do
launch_jars
sleep 3h
killall -u surge java
sleep 3h
done
我收到了错误:
$ bash /home/surge/Downloads/run.sh
/home/surge/Downloads/run.sh: line 2: $'\r': command not found
/home/surge/Downloads/run.sh: line 3: syntax error near unexpected token `$'{\r'
'home/surge/Downloads/run.sh: line 3: `launch_jars() {
$
答案1
假设您使用启动 Java JAR java -jar cooljar.jar
,则可以使用以下脚本:
#!/bin/bash
launch_jars() {
for i in {1..17} ; do
java -jar cooljar.jar &
sleep 7
done
}
while 1 ; do
launch_jars
sleep 3h
killall -u surge java
sleep 3h
done
launch_jars
这定义了连续 17 次启动同一个 JAR 文件的函数,每次启动间隔 7 秒。
它将运行一个无限循环来调用该函数,等待 3 个小时,终止java
用户的所有进程surge
,然后再等待 3 个小时。
复制脚本并使用文本编辑器保存,例如gedit
。jar-launcher.sh
然后通过运行终端命令使其可执行
chmod +x jar-launcher.sh
然后你就可以运行脚本了。要中止它,请按Ctrl+ C。