Ho bisogno di eseguire uno script (bash o perl o php, qualsiasi altro eseguirà) un altro comando e poi uscire, mentre l'altro comando è ancora in esecuzione ed esce da solo. Potevo programmare via al comando, ma ero curioso di sapere se c'era un modo più semplice.spawn un processo completamente separato in linux via bash
risposta
#!/bin/sh
your_cmd &
echo "started your_cmd, now exiting!"
costrutti simile esiste per Perl e PHP, ma in sh/bash è molto facile da eseguire un altro comando in background e procedono.
modificare
una buona fonte per la manipolazione processo generico sono tutti gli script di avvio sotto /etc/init.d
. Fanno ogni sorta di trucchetti come tenere traccia dei pid, eseguire comandi base start/stop/restart ecc.
Una cosa che mi ha catturato in relazione a questo - non è possibile ... [$ var -eq 1] && your_cmd & ... perché il processo genitore continuerà a funzionare. – chrism1
Potrebbe essere necessario usare 'nohup' per impedire a' your_cmd' di morire dopo aver chiuso la shell; guarda la risposta di camh. – reinierpost
&
?
#!/usr/bin/bash # command1.sh: execute command2.sh and exit command2.sh &
Come hai preso un unicorno a quattro corna, con tutte e quattro le corna in testa? –
È un corno, ma è in piedi di fronte a un arcobaleno. – mob
io non sono del tutto sicuro se questo è quello che stai cercando, ma è possibile sfondo un processo eseguito in un guscio aggiungendo la e commerciale (&) simbolo come l'ultimo carattere del comando.
Quindi, se avete lo script, a.sh
e a.sh ha bisogno di generare un processo separato, come dire eseguire il b.sh sceneggiatura, devi:
b.sh &
Per eseguire un comando in background, è possibile aggiungere un '&' al comando.
Se è necessario il programma per superare la sessione di accesso, è possibile utilizzare nohup.
Vai a questa discussione simile StackOverflow: how to run a command in the background ...
Finché lei ha ricordato Perl:
fork || exec "ls";
... dove "ls" è nulla. Ripeti il numero di comandi di cui hai bisogno per sparare.
Oppure, solo "exec" ls ";" se non è necessario continuare il processo corrente. E il vantaggio di questo approccio è ottenere l'output STDOUT inviato alla console (come se avessi digitato il comando dalla riga di comando). –
Il modo usuale per eseguire un comando e mantenerlo in esecuzione al momento del logout è utilizzare nohup(1)
. nohup
impedisce al comando dato di ricevere il segnale HUP all'uscita dalla shell. È inoltre necessario eseguire in background con il suffisso del comando e commerciale (&).
$ nohup some_command arg1 arg2 &
- 1. npm adduser via bash
- 2. uwsgi + django via Nginx - impostazioni uwsgi/spawn?
- 3. Avvio di un processo separato
- 4. avviare un processo completamente indipendente
- 5. uccidere un processo in bash
- 6. per il processo linux
- 7. Come eseguire un singolo test phpUnit in un processo separato?
- 8. Esegui una funzione come processo node.js separato?
- 9. Il garbage collector è in esecuzione in un processo separato?
- 10. Esecuzione di un'applicazione Java in un processo separato
- 11. Avvia Internet Explorer 8 in un processo separato utilizzando vbscript
- 12. Come uccidere un processo nodejs in Linux?
- 13. Processo in background in linux
- 14. Che cos'è un flusso separato in Linux fq_codel?
- 15. Come leggere un singolo file in Heroku via bash
- 16. Erlang: OTP vs spawn
- 17. MPI Spawn: processo radice non comunica ai processi figlio
- 18. Stati di processo Linux
- 19. Come eseguire un processo con un timeout in Bash?
- 20. PHP spawn process
- 21. fermare il processo "explorer" completamente con PowerShell
- 22. Avvia un processo in background in Linux con C
- 23. Processo in background con esecuzione prolungata in ASP.NET - Application_Start o processo separato?
- 24. Come ottenere il PID di un processo che viene convogliato su un altro processo in Bash?
- 25. Bash: Check up, eseguire un processo, se non in esecuzione
- 26. Bash: reindirizzare l'output da un processo già in esecuzione?
- 27. Come si crea un file sparse completamente vuoto su Linux?
- 28. Nome processo dal suo pid in linux
- 29. crea un file ripetuto looping infinito cat in linux/bash
È la pianificazione tramite cron un'opzione? –
Potresti voler elaborare le tue esigenze, perché la risposta corretta potrebbe dipendere da questo ... (1) quale processo o azione dell'utente avvierà lo script? (2) perché vuoi uno script piuttosto che lanciare direttamente il comando? (3) è necessario registrare l'output, scollegarlo dal terminale e/o avviare un nuovo gruppo di processi per il comando? (4) altri commenti? – NVRAM