首页 > 系统相关 >Python在Linux上执行脚本

Python在Linux上执行脚本

时间:2023-09-18 12:23:22浏览次数:32  
标签:脚本 script Python py python ## Linux

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

定时计划设置语法:
image
示例:

  • 30 22 * * * 每天22点30分执行命令
  • 0 13 * * 1 每周一下午1点执行命令
  • 0 5 1,10,20 * * 每月的1号,10号和20号的5点执行任务
  • 30 8 * * 1-5 周一到周五的8点30分执行任务

标签:脚本,script,Python,py,python,##,Linux
From: https://www.cnblogs.com/yuanbaobao/p/17711469.html

相关文章

  • LINUX 下 JNA 调用 so--正确版
    1.编写C++so库c++代码:注意加上extern“C”,否则无法找到c++方法。#include<stdlib.h>#include<iostream>usingnamespacestd;extern"C"{voidtest(){cout<<"TEST"<<endl;}intaddTest(inta,intb)......
  • linux设置http/https proxy及忽略proxy的方法
    msys2设置网络代理在文件.bashrc中添加exporthttp_proxy="proxyIP:port"如exporthttp_proxy="192.168.0.1:8080"exporthttps_proxy="192.168.0.1:8080" 一,场景:有些linux服务器处于内网,并且没有公网ip,故要想与外网进行http/https通信只能通过nat或者加proxy的方式......
  • 184_Python 在 Excel 和 Power BI 绘制堆积瀑布图
    184_Python在Excel和PowerBI绘制堆积瀑布图一、背景在2023年8月22日微软Excel官方宣布:在Excel原生内置的支持了Python。博客原文笔者第一时间就更新到了Excel的预览版,通过了漫长等待分发,现在可以体验了,先来看看效果。在Excel公式选项卡下Python菜单......
  • Windows和Linux下通过go实现自删除
    自删除在攻防中都挺常见的,自写远控通常也有需要。可是在度娘里搜不到什么办法,于是就查查Windowsapi学习记录一回。linux先获得当前程序的文件名,再使用syscall这个包中的Unlink调用系统来删除一个目录或者文件的链接,链接没了也就删除完成了。fileName,_:=os.Executable()......
  • Linux常用快捷键
    一、最常用快捷键Tab:快速补全命令;Ctrl+l:清屏,相当于执行clear命令;二、剪切、粘贴、删除快捷键Ctrl+h:删除光标左方位置的一个字符;Ctrl+d:删除光标位置的字符;Ctrl+u:删除(剪切)光标到行首之间的字符;Ctrl+k:删除(剪切)光标到行尾之间的字符;Ctrl+w:删除(剪切)从光标位置前到当前所处......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-16-处理模态对话框弹窗
    1.简介我们在日常工作中,会经常遇到弹出警告框的问题,弹框无法绕过,必须处理才可以执行后续的测试,所以弹框处理也是我们必须掌握的一个知识。宏哥在java+selenium系列文章中介绍过这部分内容。那么,playwright对于弹框的处理是怎样的?是否比selenium更加简单呢?下面我们就来介绍一下pla......
  • Python爬虫自动切换爬虫ip的完美方案
    在进行网络爬虫时,经常会遇到需要切换爬虫ip的情况,以绕过限制或保护自己的爬虫请求。今天,我将为你介绍Python爬虫中自动切换爬虫ip的终极方案,让你的爬虫更加高效稳定。步骤一:准备爬虫ip池首先,你需要准备一个可靠的爬虫ip池。爬虫ip池是由多个爬虫ip组成的集合,可以通过API或爬虫获取......
  • Python基础教程08 - 面向对象的基本概念
    Python使用类(class)和对象(object),进行面向对象(object-orientedprogramming,简称OOP)的编程。面向对象的最主要目的是提高程序的重复使用性。我们这么早切入面向对象编程的原因是,Python的整个概念是基于对象的。了解OOP是进一步学习Python的关键。下面是对面向对象的一种理解,基于分......
  • 用python求100到999以内的水仙花数(不用除法求各项)
    c=0forainrange(100,1000):forbinstr(a):a1=int(b)c=c+a1**3ifa==c:print(a)c=0输出结果为153370371407使用for循环来取数字中的每一位,不过数字要先化为str格式来取然后再化为int格式来赋值,要注意c的值每一次......
  • 每天一个linux命令(43):killall命令
    Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。1.命令格式:killall[......