我周而复始地寻找这个问题的答案。我想有一个关键的信息,我错过了,将解决这个问题,所以希望你们可爱的开发人员可以帮助我。
我正在使用tightvnc远程连接到家里的raspberry pi,它正在运行一个具有串行输出的arduino。我想获取这个串行输出并将其放入一个txt文件中,为此,我使用putty的串行日志功能。它工作得非常出色,甚至有一个日期/时间命名功能来生成有用的日志名称。问题是我希望定期创建一个新的日志文件,并且我已经知道了如何使用bash .sh脚本启动和停止putty会话,但是我想要自动化这个过程。
**请注意,我愿意接受每天重新启动日志文件的其他方法,但这是我在几天的研究中发现的。
我认为这就像使用crontab调度脚本一样简单,但是我在尝试时遇到了一个令人费解的问题。我已经安排了两个任务,一个是停止putty,另一个是在一个新的终端中重新启动它。杀死putty的任务在crontab中工作,并使用下面给出的putty_killer.sh执行,但是使用类似的方法尝试用正确的配置文件重新启动putty没有任何作用。我不知道crontab是否输出错误日志,但如果输出错误日志,我不知道在哪里可以找到它们。这将是有用的信息,但主要是我只想知道为什么重启将无法工作。
putty_logger.sh
#!/bin/bash
sleep 1
/usr/bin/lxterminal -e /usr/bin/putty -load Hydroponics_Test_Bedputty_killer.sh
#!/bin/bash
killall puttycrontab -e
# m h dom mon dow command
00 07 * * * /bin/bash /home/pit/sketchbook/putty_killer.sh
00 07 * * * /bin/bash /home/pit/sketchbook/putty_logger.sh就像我说的,putty_killer工作得很好,然后putty_logger什么也不做。我在crontab之外的终端中都使用了这些,它们工作得很好,但是crontab似乎不知道我在putty_logger中要求什么。有语法问题吗?我需要告诉crontab使用bash而不是sh吗?怎么做?我是游泳的信息,我真的不知道如何处理,所以,您的帮助将是非常感谢!
INB4 1:我尝试过在没有crontab中的putty_killer的情况下执行putty_logger,但是没有结果,所以我不认为putty_killer会阻止putty_logger的启动。
发布于 2019-02-07 18:54:54
我想出来了伙计们!结果是,如果您的命令中有GUI组件,您必须告诉crontab要将它挂载到哪个显示器上。这可以使用导出DISPLAY=:0 && your_command来完成。
我要运行putty的最后一个crontab条目是:
# m h dom mon dow command
00 07 * * * export DISPLAY=:0 && /bin/bash /home/pit/sketchbook/putty_killer.sh
00 07 * * * export DISPLAY=:0 && /bin/bash /home/pit/sketchbook/putty_logger.sh发布于 2019-02-07 15:31:18
在行的末尾给2>&1 > /tmp/somelog,您还可以用-x打开shell调试,这样您就可以:
00 07 * * * /bin/bash -x /home/pit/sketchbook/putty_killer.sh 2>&1 > /tmp/somelog可以解释一下,linux不需要文件扩展名作为窗口,因此不需要创建文件扩展名,所以您可以使用以下方法检查cli中的日志文件内容:
cat /tmp/somelog运行ssh时不需要putty,请尝试用以下内容替换putty:
ssh -i /home/someuser/somekey usename@yourserver 'somecommand'https://stackoverflow.com/questions/54576643
复制相似问题