我有一个 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
。你将获得脚本的完整路径。