nohup(no hang-up)命令用于在后台运行一个进程,使其在用户退出登录后仍然继续运行。默认情况下,nohup会将进程的标准输出和标准错误重定向到一个名为nohup.out的文件中。
如果你想让nohup命令处理进程的标准输入,可以使用以下方法:
使用文件描述符:
你可以将一个文件描述符指向标准输入,然后将其传递给你的程序。例如,假设你有一个名为input.txt的文件,你可以使用以下命令将文件描述符3指向该文件,并将其传递给你的程序:
nohup your_command < input.txt 3>&1 &
这里,< input.txt表示将文件描述符0(标准输入)指向input.txt,3>&1表示将文件描述符3(原本指向标准输入)重定向到文件描述符1(标准输出),&表示将进程放入后台运行。
使用管道:
你可以创建一个管道,将管道的一端作为进程的标准输入,另一端作为进程的标准输出。例如,你可以使用以下命令创建一个名为pipe的管道,并将其传递给你的程序:
mkfifo pipe
nohup your_command < pipe 3>&1 &
cat input.txt > pipe
这里,mkfifo pipe命令创建了一个名为pipe的管道,< pipe表示将文件描述符0(标准输入)指向管道,cat input.txt > pipe命令将input.txt的内容写入管道。
这样,你的程序就可以通过标准输入读取数据,同时将输出发送到nohup.out文件或另一个指定的文件中。