如何使用 at 命令安排 linux 中的 python 脚本的执行?
How do I schedule the execution of a python script in linux with the at command?
我的目标是使用 at
命令安排在 Linux 中执行一个简单的 python 脚本。
问题:我的python脚本没有在指定的时间执行。没有任何反应,没有错误消息。
我有以下简单的 helloworld
文件:
#!/usr/bin/python3
print("hello world")
要安排我输入的作业:
at now + 1 min
我提供我要执行的文件:
./helloworld
键入 atq
我看到作业安排得很好。
但它只是发生了...没什么。
- 我在开发 Kali Linux
- 我已经授予 root 用户对该文件的执行权限
- 我可以从命令行运行
helloworld
文件
- root 用户在命令中具有 运行 的权限(未在
/etc/at.deny
中列出)
- 我可以安排作业
echo "hello world" > message.txt
。效果不错。
我不确定的是:
- shebang 行有问题吗?
- 我检查了
/usr/bin/
:python3
在那里并且链接到 python3.9
。
- 最好保留脚本的扩展名
.py
,因为它是 python。
- 你的文件应该是可执行的
$ chmod +x ./helloworld
- 根据您的需要,您可以在 运行
at
时键入脚本的完整路径。
- 如果你想使用
helloworld
命令,包含这个脚本的文件夹应该在PATH
环境变量中。否则,系统只是不知道在哪里可以找到它。如果这样做,则根本不需要在命令或任何路径之前键入 ./
。
关于 PATH
https://opensource.com/article/17/6/set-path-linux 的好文章
at
不写入终端(命令运行时甚至可能不存在)。相反,
The user will be mailed standard error and standard output from his commands, if any. Mail will be sent using the command sendmail(8). If at is executed from a su(1) shell, the owner of the login shell will receive the mail.
因此,如果您的命令仅写入标准输出,则您需要使用 mail
或其他邮件客户端检查本地邮箱中的命令输出。
否则,您可以让您的命令显式写入其他已知文件以供稍后查找。
我的目标是使用 at
命令安排在 Linux 中执行一个简单的 python 脚本。
问题:我的python脚本没有在指定的时间执行。没有任何反应,没有错误消息。
我有以下简单的 helloworld
文件:
#!/usr/bin/python3
print("hello world")
要安排我输入的作业:
at now + 1 min
我提供我要执行的文件:
./helloworld
键入 atq
我看到作业安排得很好。
但它只是发生了...没什么。
- 我在开发 Kali Linux
- 我已经授予 root 用户对该文件的执行权限
- 我可以从命令行运行
helloworld
文件 - root 用户在命令中具有 运行 的权限(未在
/etc/at.deny
中列出) - 我可以安排作业
echo "hello world" > message.txt
。效果不错。
我不确定的是:
- shebang 行有问题吗?
- 我检查了
/usr/bin/
:python3
在那里并且链接到python3.9
。
- 最好保留脚本的扩展名
.py
,因为它是 python。 - 你的文件应该是可执行的
$ chmod +x ./helloworld
- 根据您的需要,您可以在 运行
at
时键入脚本的完整路径。 - 如果你想使用
helloworld
命令,包含这个脚本的文件夹应该在PATH
环境变量中。否则,系统只是不知道在哪里可以找到它。如果这样做,则根本不需要在命令或任何路径之前键入./
。
关于PATH
https://opensource.com/article/17/6/set-path-linux 的好文章
at
不写入终端(命令运行时甚至可能不存在)。相反,
The user will be mailed standard error and standard output from his commands, if any. Mail will be sent using the command sendmail(8). If at is executed from a su(1) shell, the owner of the login shell will receive the mail.
因此,如果您的命令仅写入标准输出,则您需要使用 mail
或其他邮件客户端检查本地邮箱中的命令输出。
否则,您可以让您的命令显式写入其他已知文件以供稍后查找。