在Linux中,我知道如何/var/log/messages在我创建的简单shell脚本中向文件写一条简单的消息:
#!/bin/bash
logger "have fun!"
Run Code Online (Sandbox Code Playgroud)
我想停止将消息抛入默认/var/log/messages文件,并创建自己的.
我试过这个:
#!/bin/bash
logger "have more fun" > /var/log/mycustomlog
Run Code Online (Sandbox Code Playgroud)
它仍然记录到/var/log/messages.它创造了/var/log/mycustomlog它,但它是空的.
有人看到我错过了吗?
我正在尝试使用start-stop-daemon启动python脚本:
sudo /sbin/start-stop-daemon --start --pidfile /home/loop.pid \
--user www-data --group www-data -b --make-pidfile --chuid www-data \
--exec /usr/bin/python /home/loop.py --verbose
Run Code Online (Sandbox Code Playgroud)
但我的进程中没有python脚本.我做错了什么?
loop.py:
import time
while True:
print "working..."
time.sleep(3)
Run Code Online (Sandbox Code Playgroud) 我有一点时间使用start-stop-daemon在java脚本中正确启动java程序.我已经编写了init脚本,它似乎运行但是之后从来没有一个进程表示正在运行的程序.
这是我的init脚本的片段
#! /bin/sh
#
#
DAEMON="/usr/bin/java"
DAEMON_ARGS="-server -cp <bunch of RMI arguments and classpath stuff> -jar <absolute path>/myprog.jar"
PIDFILE="/var/run/myprog.pid"
case "$1" in
start)
echo -n "Starting myprog"
start-stop-daemon --start --pidfile "$PIDFILE" --chuid "myuser" --verbose --background --make-pidfile --startas "$DAEMON" -- $DAEMON_ARGS
echo "."
;;
Run Code Online (Sandbox Code Playgroud)
当我尝试通过/etc/init.d启动它时,我得到以下内容:
/etc/init.d# /etc/init.d/myscript start
启动myprogStarting/usr/bin/java ...
重启以启动/usr/bin/java..done.
.
之后,没有运行java解释器进程,执行myprog.jar
我已经尝试了--exec, - start的各种组合,或多或少相同的结果.如果我能更清楚地了解正在发生的事情,我相信我可以解决这个问题,但我不确定如何做到这一点.
有什么建议?
(我在嵌入式ARM平台上运行Angstrom,因此Java Service Wrapper实际上不是一个可行的选择,即我认为它不适用于ARM)
我被困了所以任何建议都会非常感激.
谢谢.
已经有几个关于此的问题,但似乎没有一个有效。我有一个当前已关闭的生产系统,我需要能够快速从守护进程获取 stderr 输出以对其进行调试。
我以为我可以从调用点(在 init.d 脚本中)重定向输出,但事实证明这是极其困难的。
start-stop-daemon -d $DDIR -b -m --start --quiet -pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS > /var/log/daemon.log 2>&1 \
|| return 2
Run Code Online (Sandbox Code Playgroud)
这是行不通的。我尝试运行一个 shell 脚本来调用可执行文件并重定向输出,但日志文件仍然为空(而且我确实知道该进程正在输出信息)。
任何帮助将不胜感激。