2010-10-01 86 views
2

在Unix中,我有一個我想用nohup運行的進程。然而,這個過程將在某個時候等待提示,我必須輸入yesno才能繼續。到目前爲止,在Unix中我一直在做以下我可以在Perl的反引號中執行多行命令嗎?

nohup myprocess <<EOF 
y 
EOF 

所以我使用的nohup和管道與文件「Y」,然後關閉該文件啓動進程的myprocess「。上面的行實際上是三個獨立的命令 - 即我在UNIX的第一行中輸入,然後在輸入'y'後輸入'y',然後按回車鍵,最後輸入'EOF'並再次返回。

我想知道在Perl中執行此操作,但我不確定如何執行此命令,因爲它在三行以上。我不知道以下是否會起作用....

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

請幫忙 - 謝謝!

+0

是的,它會工作。 – 2010-10-01 01:14:13

+0

也許Unix和Linux的堆棧交換可能有所幫助:http://unix.stackexchange.com/ – oadams 2010-10-01 04:02:51

+1

當你不知道某些東西是否可行時,編寫一個小測試程序並找出答案。 :) – 2010-10-01 17:34:58

回答

5

我認爲你的建議將按原樣工作。如果沒有,請嘗試用管替換重定向:

my $startprocess = `(echo "y" | nohup myprocess) &`; 

此外,根據爲什麼你正在做一個nohup,請看看下面的純Perl的daemonizing方式使用Proc::DaemonHow can I run a Perl script as a system daemon in linux?

+0

+1:如果我沒有測試它,這看起來很合理。 – dawg 2010-10-01 01:43:44

+0

在大多數Unixen/usr/bin/yes上 – user449592 2010-10-01 08:43:23

2

Expect爲互動節目也可以使用。

相關問題