GNU/Linux >> Znalost Linux >  >> Linux

Provést příkaz Nohup se vstupem?

V UNIXu mám proces, který chci spustit pomocí nohup. Tento proces však v určitém okamžiku počká na výzvu, kde musím zadat yes nebo no aby to pokračovalo. Doposud jsem v UNIXu dělal následující:

nohup myprocess <<EOF
y
EOF

Spustím tedy proces ‚myprocess‘ pomocí nohup a pipe v souboru s ‚y‘ a pak soubor zavřu. Řádky výše jsou v podstatě tři samostatné příkazy – tj. stisknu Enter na prvním řádku v UNIXu, pak se zobrazí výzva, kde zadám „y“ a poté stisknu enter, nakonec napíšu „EOF“ a znovu stisknu return. Takže to funguje perfektně, ale můj problém je níže.

Chci to nyní provést v Perlu, ale nejsem si jistý, jak mohu tento příkaz provést, protože je přes tři řádky. Nevím, jestli bude fungovat následující:

my $startprocess = `nohup myprocess <<EOF &
y
EOF
`

Přijatá odpověď:

Pokud chcete napsat pouze jeden y na standardní adresu procesu můžete provést toto:

(echo y | nohup myprocess) &

Pokud chcete pokračovat v psaní y pro každou výzvu, která se objeví, coreutil yes existuje přesně pro tento účel — bude neustále zapisovat, co mu řeknete, do stdout. Jeho výchozím nastavením je výstup „y“, takže můžete jednoduše:

(yes | nohup myprocess) &

ale pokud potřebujete něco jiného, ​​můžete to předat jako argument


Linux
  1. Příkaz Nohup s příklady

  2. JQ Command v Linuxu s příklady

  3. Jak spustit příkaz bash s právy sudo v Javě?

  1. wc Linux Command s příklady

  2. Provést příkaz jednou na řádku se vstupem z potrubí?

  3. Příkaz Linux/Unix pro spojení N řádků vstupu s oddělovači?

  1. Linux řazení příkazů s příklady

  2. Echo Command v Linuxu (s příklady)

  3. man Command v Linuxu s příklady