Cron 作业启动 Python 脚本,但未收到任何输出

Cron 作业启动 Python 脚本,但未收到任何输出

我有一个 Python 程序,可以复制连接到我的 PC 的 USB 设备的内容,在本例中它是一台 Android 平板电脑。该脚本用于pyudev检测设备,然后用于GVfs安装它们。

我想启动脚本并在后台运行它,这样我就不必每次都启动它。我尝试在 中启动它,/etc/init/GVfs以 root 身份运行会导致问题,所以我决定通过 运行脚本cron。我已将其设置为在特定时间启动,如果我执行 ,ps -aux我可以看到列出的进程,但是如果我插入我的设备,什么也不会发生,文件不会被复制。

如果我手动启动脚本,它就可以正常运行。

这就是我的 crontab 中的内容。

45 10 * * * cyberbemon /home/cyberbemon/Development/python/usb-dumper-1.0/build/lib.linux-x86_64-2.7/usb-dumper/./usb-dumper.py `

python 正在使用这个环境#!/usr/bin/env python

我尝试将程序输出记录到文件中,如下所示cyberbemon /home/cyberbemon/Development/python/usb-dumper-1.0/build/lib.linux-x86_64-2.7/usb-dumper/./usb-dumper.py > /home/cyberbemon/usb-dumped/log.txt 2>&1

但该文件是空的。

我从这里获得了该程序的源代码:https://codingteam.net/project/usb-dumper/download

答案1

  • 如果您已经编辑用户的 crontab,然后隐藏/删除通向脚本的长路径前面的用户名cyberbemon。您不需要用户名。

  • 如果我没记错的话,您在#!开头指定了用户的环境,而不是!。这可能只是帖子中的拼写错误,或者您在撰写帖子时忘记了代码块中的井号(例如\#!)。因此它应该是:

    #!/usr/bin/env python

  • 这可能只是我的感觉,但我不熟悉包含/./中间某处的路径,例如:

/home/cyberbemon/Development/python/usb-dumper-1.0/build/lib.linux-x86_64-2.7/usb-dumper/。 /usb-dumper.py

... 不添加空格。通常在大多数类型的 shell 中.是:

  • source在文件名前单独使用时, 与 cmd 同义。

  • 当作为文件名前缀时,表示隐藏文件。

  • 在正则表达式中用于匹配单个字符

  • 在路径中使用时指示当前工作目录,例如

    $ cd $HOME/Desktop; pwd

    /home/cyberbemon/桌面

    $ cp $HOME/.bashrc 。

我建议你转到存储 Python 脚本的目录,然后在终端中运行命令pwd。你将获得脚本的完整路径。

相关内容