Repository navigation
Expand file tree
/
Copy path_common.sh
More file actions
30 lines (27 loc) · 1.42 KB
/
Copy path_common.sh
File metadata and controls
30 lines (27 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Funções compartilhadas por start-xmage.sh e start-public.sh.
# Não é pra rodar sozinho -- só "source" a partir dos outros scripts.
is_port_listening() {
netstat -ano 2>/dev/null | grep -q ":$1 .*LISTENING"
}
port_pid() {
netstat -ano 2>/dev/null | grep ":$1 " | grep "LISTENING" | awk '{print $NF}' | head -1
}
# Sobe um comando REALMENTE desacoplado do terminal atual -- "(cmd &)" sozinho
# não basta no Windows: os processos filhos continuam presos ao CONSOLE que
# os lançou, e fechar essa janela (de propósito ou porque um script rodado
# por duplo-clique fecha sozinho ao terminar) mata tudo que estava preso a
# ela, mesmo estando "em background". Gravar o comando num .bat e abrir com
# Start-Process do PowerShell cria um processo em janela própria (oculta),
# sem vínculo nenhum com este terminal -- sobrevive a ele fechar.
launch_detached() {
local logfile="$1" cmdline="$2"
local win_log bat win_bat
# tem que ser ABSOLUTO: o comando pode fazer "cd" pra outra pasta antes de
# rodar (ex: entrar em Mage.Server), e o redirecionamento ">" do .bat é
# resolvido relativo ao diretório ATUAL naquele ponto, não a este script.
win_log=$(cygpath -w "$(realpath -m "$logfile")")
bat=$(mktemp --suffix=.bat)
printf '@echo off\r\n%s > "%s" 2>&1\r\n' "$cmdline" "$win_log" > "$bat"
win_bat=$(cygpath -w "$bat")
powershell -NoProfile -Command "Start-Process -FilePath '$win_bat' -WindowStyle Hidden" >/dev/null
}