Precisa de ajuda na criação de scripts com arquivos jar

3

Eu preciso lançar 17% dos arquivos.jar, um de cada vez, com um atraso de 7 segundos entre cada um. 3 horas depois, eu preciso matar todos os processos de java , mas apenas aqueles que estão executando o usuário de pico. 3 horas depois, preciso repetir esse processo.

Então eu tenho algo parecido com isso em um arquivo de lote do 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 

Agora eu preciso disso no formato de script de shell do Linux.

Então eu tenho usado

nohup java -jar cooljar.jar && nohup java -jar cooljar.jar && nohup java -jar cooljar.jar. 

Mas isso não permite um atraso entre cada lançamento.

edite: desculpe, eu não mencionei isso, os frascos têm argumentos diferentes.

Editar @Byte Commander: Estou tentando seu exemplo assim. Não está funcionando.

#!/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

e estou recebendo erros:

$ 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() {
$
    
por user2656801 15.07.2016 / 12:44

1 resposta

4

Supondo que você inicie seu Java JAR usando java -jar cooljar.jar , você pode usar este script:

#!/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

Isso define a função launch_jars que inicia o mesmo arquivo JAR 17 vezes seguidas com um atraso de 7 segundos entre elas.

Ele executará um loop infinito de chamar essa função, aguardando 3 horas, eliminando todos os java processos do usuário surge e aguardando mais 3 horas.

Copie o script e salve-o usando um editor de texto como gedit como, por exemplo, %código%. Em seguida, torne-o executável executando o comando do terminal

chmod +x jar-launcher.sh

Você pode então executar o script. Para abortar, tecle Ctrl + C .

    
por Byte Commander 15.07.2016 / 13:27

Tags