我需要在远程服务器上运行python脚本(我不是该服务器的所有者,因此无法检查var/log/syslog
)。脚本与脚本可以运行的其他文件一起放在一个文件夹中。该脚本将写出一个文本文件,所写的信息包括脚本的运行时。
如果我手动执行脚本,它将写入包含所有正确信息的文本文件。但是,当我设置测试cron作业以确保脚本运行并且输出文件看起来像我想要的内容时,输出文件只有一行,其中包含一个很小的浮点数,我认为这是脚本的运行时。服务器的默认python版本是python 2.7。但是,我的脚本需要python3才能运行。下面是我使用的crontab命令
# crontab command
# the time is just an example
23 23 13 4 6 /usr/bin/python3 /home/user_name/path/to/file.py
我尝试仅使用python3 files.py
和python3.5 files.py
,在所有情况下都使用相同的结果。
我尝试运行脚本的文件夹中的所有文件,脚本本身为chmod 707
另外,还有一个问题,我正在与其他人共享此服务器;但是,我不希望他们能够打开我的文件,我应该将文件和文件夹设置为什么chmod,以便cron仍然能够执行我的文件,而人们将无法查看它(服务器的所有者)
答案 0 :(得分:0)
首先,权限:
因此,这意味着如果您想保留自己的东西,请仅向用户(以及您的组(如果您是唯一的成员,则是同一件事))授予权限。您的crontab可以轻松访问用户可以访问的任何内容。
因此,请赋予user_name:user_name
的所有相关目录和所有文本文件所有权以及660
的权限(只有您可以读写它们)。为所有可执行文件赋予相同的所有权,但具有770
的权限(因此您也可以执行它们)。
然后,如果您具有ssh访问权限,只需从命令行执行/usr/bin/python3 /home/user_name/path/to/file.py
即可查看它的下落位置。假设您没有ssh访问权限,那么您需要捕获crontab执行的输出。使用以下crontab行:
23 23 13 4 6 /usr/bin/python3 /home/user_name/path/to/file.py > /home/user_name/output.txt 2>&1
这会将所有STDERR重定向到STDOUT(2>&1
位),并将STDOUT重定向到output.txt(>
位)。
运行并检查output.txt的内容。我猜想您会发现Python无法访问某些内容,并且在向文件中写入大量内容之前遭到轰炸。