Linux 命令行运行 Python 脚本
1. 安装 Python 解释器
查看Python解释器安装位置:
which python
2. 创建 Python 脚本
这里说下在linux中命令行创建Python脚本
## nano 命令创建 hello.py,里面写一个 print("Hello, World!")
nano hello.py
更多场景是你写个python文件,上传服务器,可以用ftp连接服务器
# 记住自己上传的目录 要填
python3 /root/job.py
3. 运行 Python 脚本
python hello.py
添加参数和选项
- 命令行中向 Python 脚本传递参数
## 运行 script.py 文件,并将 arg1、arg2 和 arg3 作为参数传递给它
python script.py value1 value2 value3
用sys.argv 对象来获取这些参数和选项。sys.argv 是一个包含命令行参数的列表
- 第一个元素是脚本的名称
- 后面的元素是传递给脚本的参数和选项。
import sys
for arg in sys.argv:
print(arg)
# 会输出下面内容
script.py
value1
value2
value3
- 命令行中向 Python 脚本传递选项
用选项来运行 Python 脚本
# 运行 script.py,并将 --name 和 --age 选项设置为 Alice 和 30
python script.py --name Alice --age 30
import argparse
# 用 argparse 模块 解析命令行选项
parser = argparse.ArgumentParser()
# 用 add_argument 方法 定义需接受的两个选项
parser.add_argument("--name", help="your name")
parser.add_argument("--age", help="your age")
# 用 parse_args 方法来解析这些选项
args = parser.parse_args()
print(f"Your name is {args.name}")
print(f"Your age is {args.age}")
- 将输出重定向到文件
## 运行 script.py,将输出重定向到 output.txt 文件
python script.py > output.txt
## 将输出附加到文件中,而不是覆盖它
python script.py >> output.txt
- 使用管道连接多个命令
用管道 | 将多个命令连接在一起,将使每个命令的输出成为下一个命令的输入。
## 运行 script.py,将其输出发送到 sort 命令进行排序
python script.py | sort
## 运行 script.py,将其输出发送到 grep 命令,搜索包含 "keyword" 的行
python script.py | grep "keyword"
用 Python 脚本自动化任务
Python脚本可以执行很多自动化任务,比如:
- 数据备份和恢复
- 更新软件包
- 管理文件系统
- 发送电子邮件或短信
- 服务器管理任务,如日志清理和监控
用 Python 脚本自动化数据备份和恢复
import os
import shutil
import tarfile
def backup(source, destination):
with tarfile.open(destination, "w:gz") as tar:
tar.add(source)
def restore(source, destination):
with tarfile.open(source, "r:gz") as tar:
tar.extractall(destination)
if __name__ == "__main__":
# 备份数据
source = "/home/user/data"
destination = "/home/user/backup.tar.gz"
# 将目录压缩成 tar.gz 文件
backup(source, destination)
# 恢复数据
source = "/home/user/backup.tar.gz"
destination = "/home/user/data-restored"
# 将 tar.gz 文件解压缩到指定目录
restore(source, destination)
# 编辑 crontab 文件
crontab -e
# 添加以下行:在每天0点自动运行脚本,将数据备份到指定的目录中
0 0 * * * /usr/bin/python /path/to/backup_script.py
另外一个自动化技巧是编写shell脚本调用 Python脚本:
编写shell脚本调用 Python脚本
1. 编辑shell脚本
## 编辑shell脚本
vim s1.sh
## 要用文件的绝对路径
#!/bin/bash
python3 /root/job.py
echo 'Python脚本执行成功,时间:' >> /root/log
date >> /root/log
## 保存并退出
:wq
2. 将shell脚本转换成可执行文件
chmod u+x /root/s1.sh
# 检测Shell脚本能否正常执行
/root/s1.sh
# 正产输出hello word!
Hello World!
3. 定时执行shell脚本
## 编辑定时任务
crontab -e
## 添加以下任务,每隔1分钟执行1次s1.sh脚本
*/1 * * * * /root/s1.sh
## 1分钟后,/root目录多了个文件log,保存着程序执行的记录
## 查看内容
tail -f /root/log
定时计划设置语法:
示例:
- 30 22 * * * 每天22点30分执行命令
- 0 13 * * 1 每周一下午1点执行命令
- 0 5 1,10,20 * * 每月的1号,10号和20号的5点执行任务
- 30 8 * * 1-5 周一到周五的8点30分执行任务