Vai al contenuto

Applescript e Terminale


arranger

Messaggi raccomandati

ho fatto in applescript un semplice script che mi esegue dei comandi sul terminale

L'ho salvato come applicazione, dato una bella icona e messo nel dock.

Il mio dilemma è : esiste un metodo (anche laterale) per cui visivamente ho del feedback sulla durata del processo nella shell?

mi spiego meglio: lo script è velocissimo e dura niente: la lucetta sotto la sua icona GIUSTAMENTE si spegne quando ha terminato, vorrei farla durare fino a quando quella finestra del terminale è aperta (ho provato con dei loop sullo stato della finesta, ma si rivelavano poi infiniti)

Link al commento
Condividi su altri siti

hai ragione così l'applicazione in applescript permane in 'vita' per la durata del processo nella shell

tuttavia io nella shell ci caricavo un bot per irc e faceva comodo monitorarlo visivamente, mentre adesso è come se fosse su una shell remota

qualche idea?

-edit- inoltre facendo come dici te poi non posso terminare la vita del bot pur facendo uscita forzata sulla applicazone

Link al commento
Condividi su altri siti

ho fatto una cosa simile

tell application "System Events"

delay 2

repeat while (exists process "perl")

delay 2

end repeat

end tell

ma il processo non lo trova......sembra che trovi solo i processi che iniziano con la maiuscola (vedo i nomi in monitoraggio attività), magari perl non è il vero nome: come faccio a scovare l'originale (e che funzioni?)

Link al commento
Condividi su altri siti

Se l'output non ti interessa vederlo in tempo reale puoi assegnarlo ad una variabile e fartelo mostrare alla fine del processo stesso.

Esempio:

set var to do shell script "mio comando"
display dialog var

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

risolto!

set s to "ps xa -o pid,command | grep perl | grep -v grep | cut -d\"/\" -f1" as string

set var to do shell script s

repeat while (var is not "")

delay 10

set var to do shell script s

end repeat

ora però vorrei fare che quando chiudo l'applicazione (ho salvato lo script come applicazione) il processo venisse killato

è possibile?

Link al commento
Condividi su altri siti

Ciao! :cry:

Sinceramente, adesso non mi viene in mente nessuna idea sensata, solo vie traverse.

Non riesco comunque ancora a capire l'utilità di avere un'applicazione AppleScript che rimanga aperta (e se non ho capito male senza neanche una finestra o altro) mentre il succo del programma lo svolge il Terminale facendo eseguire uno o più comandi con una sua finestra aperta che rimane comunque indipendente dall'applicazione. :ghghgh:

Ma non ti conviene allora fare un file .command?

Così te lo apre e te lo esegue direttamente il Terminale e quando ha fatto basta che lo chiudi (oppure lo fai chiudere direttamente allo script :ciao: ).

Marco - Gallery

MacBook Nero 2.2 GHz Intel Core 2 Duo - 4 GB RAM - Mac OS X 10.6 Snow Leopard

Link al commento
Condividi su altri siti

:popcorn: no

come ho detto sopra la cosa utile è monitorare visivamente dal dock l'andamento di quel processo che è il mio bot in IRC :o

oggi sono arrivato a scoprire e fare questo

global var

global vor

on run

tell application "Terminal"

activate

delay 2

try

set vor to id of first window whose frontmost is true

on error

do script "clear"

set vor to id of first window whose frontmost is true

end try

tell application "System Events"

tell process "Terminale"

keystroke "t" using command down

--tell menu bar 1

--tell menu "Shell"

--click menu item "Nuovo Pannello"

--end tell

--end tell

end tell

end tell

set xid to count tabs in window id vor

do script "cd infobot-0.45.3

./infobot" in tab xid of window id vor

--set vor to window id of result

end tell

set var to ""

end run

on idle

delay 10

set s to "ps xa -o pid,command | grep perl | grep -v grep | cut -d\"/\" -f1" as string

set var to do shell script s

if (var is "") then

quit

end if

end idle

on quit

try

do shell script "kill " & var

tell application "Terminal"

close (window whose id is vor)

end tell

continue quit

on error

--display dialog "Really quit?" buttons {"No", "Quit"} default button "Quit"

--if the button returned of the result is "Quit" then

--display dialog "Error" & var

continue quit

end try

--end if

-- If I don't continue the quit, the app will keep running.

end quit

ora devo solo perfezionare il fatto della finestra del terminale, infatti così me lo apre sempre in un tab(che già non è male :prr:)

scusate se è scritto in maniera bislacca ma applescript lo conosco da 4 giorni

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...