【问题标题】:how to send input to a daemon in linux如何将输入发送到linux中的守护进程
【发布时间】:2013-05-10 05:34:17
【问题描述】:
#!/bin/bash

. /etc/init.d/functions

NAME=foo
DIR=/home/amit/Desktop
EXEC=foo.pl
PID_FILE=/var/run/foo.pid
IEXE=/etc/init.d/foo
RUN_AS=root

if [ ! -f $DIR/$EXEC ]
then
    echo "$DIR/$EXEC not found."
    exit
fi

case "$1" in
start)
    echo -n "Starting $NAME"
cd $DIR
/home/amit/Desktop/foo.pl
    echo "$NAME are now running."
    ;;
stop)
echo -n "Stopping $NAME"
    kill -TERM `cat $PID_FILE`
rm $PID_FILE
    echo "$NAME."
    ;;
force-reload|restart)
    $0 stop
    $0 start
    ;;
  submit)
  echo $2 >> /tmp/jobs
    ;;
  *)
    echo "Use: /etc/init.d/$NAME {start|stop|restart|force-reload}"
    exit 1
  ;;
esac
exit 0

我创建了一个带有启动和停止选项的守护程序(服务 foo 启动/停止),它工作正常。现在我想向 dameon 发送一个输入。类似 "service foo submit [argument]" 。我想知道 - 如果用户键入“service foo submit alexander”,如何将 alexander 发送到正在运行的守护进程?

【问题讨论】:

    标签: perl bash signals daemon


    【解决方案1】:

    如果我的问题是正确的 - 就像您已经使用位置变量 $1 一样,您也可以将其余参数提供给命令,即:

    "your_start_up_script" [切换到脚本 $1] [arg 2 将通过 $2 访问] [arg 3 将通过 $3 访问]
    然后在你做的脚本里面:

    案例“$1”在 开始) echo -n "开始 $NAME" cd $目录 /home/amit/Desktop/foo.pl "$2" "$3"

    【讨论】:

    • 感谢您的回复。但是当我说 service foo start 时,我不想将参数传递给 scsript。当我说“service foo start”时,脚本在 while 循环中作为守护进程运行。接下来,当用户说“服务 foo 提交参数”时,我需要将参数传递给正在运行的守护进程。
    • 我明白了,基本上你的意思是“我如何通过 bash shell 与正在运行的进程通信”,对吗?如果是这样,那么你启动这个守护进程的方式确实不是那么重要......
    • 是的,你是正确的。你能建议我以某种方式与正在运行的守护进程通信并在守护进程开始运行后传递参数吗?但我想通过“service foo submit 与守护进程通信
    • - "service" 只是一个实用程序 (/sbin/service),它运行位于 /etc/init.d/ 并具有相应文件名的任何脚本。因此,将用于传递参数的脚本命名为“whatever”,将其放入 /etc/init.d/ 中,然后运行 ​​$service “whatever”,它就可以了。但真正的问题是如何在这里将 args 传递给守护进程......你没有 bash 的方式来做这件事,所以你必须在你的守护进程中提供它,例如while 循环中的守护进程检查其中是否存在某些文件和参数,然后通过运行上述 $service 来创建文件
    • 提交) echo $2 >> /tmp/job_queue ;;所以这样的事情对吗?因此,当我键入“service foo submit job”时,“job”被写入位于某处的文件中,该文件由运行在 while 循环中的守护进程持续监控输入。检查提交部分的编辑代码。
    猜你喜欢
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 2012-10-08
    • 2013-08-02
    相关资源
    最近更新 更多