首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何通过python和dbus创建systemd临时计时器和服务(systemd-run like)?

通过Python和DBus创建systemd临时计时器和服务的方法如下:

  1. 首先,确保系统中已安装systemd和Python的DBus模块。
  2. 导入所需的模块:
代码语言:txt
复制
import dbus
from dbus import systemd1
  1. 创建DBus连接:
代码语言:txt
复制
bus = dbus.SystemBus()
  1. 获取systemd的接口对象:
代码语言:txt
复制
manager_obj = bus.get_object('org.freedesktop.systemd1', '/org/freedesktop/systemd1')
manager = dbus.Interface(manager_obj, 'org.freedesktop.systemd1.Manager')
  1. 创建计时器:
代码语言:txt
复制
def create_timer(timer_name, time_delay):
    timer_path = manager.CreateTimer({'OnUnitActiveSec': time_delay})
    timer_obj = bus.get_object('org.freedesktop.systemd1', timer_path)
    timer = dbus.Interface(timer_obj, 'org.freedesktop.systemd1.Timer')
    timer_properties = dbus.Interface(timer_obj, 'org.freedesktop.DBus.Properties')
    timer_properties.Set('org.freedesktop.systemd1.Timer', 'Persistent', False)
    timer_properties.Set('org.freedesktop.systemd1.Timer', 'Unit', timer_name)
    return timer_path
  1. 创建服务:
代码语言:txt
复制
def create_service(service_name, service_exec):
    service_path = manager.CreateService()
    service_obj = bus.get_object('org.freedesktop.systemd1', service_path)
    service = dbus.Interface(service_obj, 'org.freedesktop.systemd1.Service')
    service_properties = dbus.Interface(service_obj, 'org.freedesktop.DBus.Properties')
    service_properties.Set('org.freedesktop.systemd1.Service', 'ExecStart', service_exec)
    service_properties.Set('org.freedesktop.systemd1.Service', 'Unit', service_name)
    return service_path
  1. 示例代码:
代码语言:txt
复制
# 创建一个5秒后执行的计时器和服务
timer_path = create_timer('example.timer', '5s')
service_path = create_service('example.service', '/bin/echo "Hello, World!"')

# 启动计时器和服务
manager.StartUnit(timer_path, 'replace')
manager.StartUnit(service_path, 'replace')

注意:这只是一个简单的示例代码,可以根据实际需求进行扩展和修改。在实际使用中,需要确保对DBus的操作具有足够的权限,并且正确处理异常情况。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于Linux中控制群组cgroup(资源管理指南)的一些笔记

Undefined scope scope : 一组外部创建的进程。由强制进程通过 fork() 函数启动终止、之后被 systemd 在运行时注册的进程,scope 会将其封装。...service slice 单位可通过永久单位文件来配置;或者对 PID 1 进行 API 调用,在运行时动态创建。scope 单位只能以第一种方式创建。...要为服务创建 transient cgroup(临时 cgroup),请使用 systemd-run 指令启动此服务。如此,可以限制此服务在运行时所用资源。...对 systemd 进行 API 调用,应用程序可以动态创建临时 cgroup。服务一旦停止,临时单位就会被自动移除。...用 systemd-run 创建临时 cgroup systemd-run指令用于 创建、启动临时 service 或 scope 单位,并在此单位中运行自定义指令。

1.7K21

关于 Linux 中 Cgroup (资源管理)的一些笔记

scope scope : 「一组外部创建的进程。由强制进程通过 fork() 函数启动终止、之后被 systemd 在运行时注册的进程,scope 会将其封装。...service slice 单位可通过永久单位文件来配置;或者对 PID 1 进行 API 调用,在运行时动态创建。scope 单位只能以第一种方式创建。...要为服务创建 transient cgroup(临时 cgroup),请使用 systemd-run 指令启动此服务。如此,可以限制此服务在运行时所用资源。...用 systemd-run 创建临时 cgroup systemd-run 指令用于 「创建、启动临时 service 或 scope 单位,并在此单位中运行自定义指令「。」...systemd-run 来启动新 service 临时创建一个Service,并添加到指定的slice上。

1K20
  • 关于 Linux 中使用 systemd-run 创建临时 cgroup 限制 ad-hoc 资源消耗的一些笔记

    --------《生命中不能承受之轻》」 简单介绍 通过 systemd-run 命令我们可以创建一个临时的cgroup并且可以在这个cgroup中运行临时命令。...由强制进程通过 fork() 函数启动终止、之后被 systemd 在运行时注册的进程,scope 会将其封装。例如:用户会话、 容器虚拟机被认为是 scope。...CPUShares=600 MemoryLimit=500M 其他的参数可以通过帮忙文档 查看 man systemd-run 因为是临时生成,所以 通过上面的方式生成的 单元文件,默认在 API文件系统.../run 下, 生命周期临时的进程周期相同。...systemd-run 创建临时 Cgroup 来限制ad-hoc(临时命令)的资源消耗就和小伙伴分享到这里,更多参数特性请查看手册了解 man systemd-run | cat 博文引用资源 http

    75030

    关于Linux下通过pingmtr 长期监控网络输出日志报告的一些笔记

    写在前面 分享一些 通过 ping、mtr 长期监控网络输出报告的笔记 博文内容涉及 通过systemd-run 启动一个临时的 ping Service 实现长 ping 日志输出 通过systemd-run...·黑塞《德米安》 关于 ping mtr 的作用使用这里不多介绍,下面提供的实现方式前提是系统通过 Systemd 来引导进程。...ping 对于 ping 来讲可以 通过 systemd-run 来生成临时 Service ,然后通过 journalctl 获取命令 ┌──[root@vms82.liruilongs.github.io...,启动 临时 time 每分钟执行一次 mtr 命令输出一次报告,同样可以通过 journalctl 来管理应用。...┌──[root@vms81.liruilongs.github.io]-[~] └─$systemd-run --on-calendar=*:*:00 --unit mtr-print-log --

    58430

    可能是史上最全面易懂的 Systemd 服务管理教程!( 强烈建议收藏 )

    Systemd 通过 Socket 缓存、DBus 缓存建立临时挂载点等方法进一步解决了启动进程之间的依赖,做到了所有系统服务并发启动。...,创建后父进程会立即退出 Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行 Type=dbus:当前服务通过D-Bus启动 Type=notify:当前服务启动完毕...:Systemd 的内部工具,用于显示系统上下文中的各种路径配置 systemd-run:用于将任意指定的命令包装成一个临时的后台服务运行 systemd-stdio- bridge:Systemd 的内部...工具,用于将程序的标准输入输出重定向到系统总线 systemd-tmpfiles:Systemd 的内部工具,用于创建和管理临时文件目录 systemd-tty-ask-password-agent:...$ PASSWORD=$(systemd-ask-password "Input Your Passowrd:") systemd-run systemd-run 可以将一个指定的操作变成后台运行的服务

    65.7K1213

    centos7系统服务管理

    systemd是RH7系列操作系统开始启用新的系统和服务管理器。...激活逻辑: 在激活或关闭单元之前,systemd会计算它的依赖关系,创建一个临时事务,并验证这个事务是否一致....兼容sysv init: 支持sysv init风格的启动脚本 兼容性 systemd系统和服务管理器的设计主要是兼容sysv initupstart.主要的兼容性变化包括: systemd对运行级别的支持有限...的target取代,通过一系列依赖关系将其他systemd units组合在一起,来模拟一个运行级别的概念.在运行级别的基础上target有更丰富更灵活的运行模式. 1,sysvsystemd 区别...系统和服务管理器之外,systemctl实用程序还允许您通过ssh协议与在远程服务器上运行的systemd进行交互.需要使用openssh协议,并且远程服务器上openssh server开启 systemctl

    1.3K20

    slurm--cgoup v2插件

    本文档概述了它是如何设计的,目的是为了更好地了解当Slurm用这个插件约束资源时系统上发生了什么。 在阅读本文档之前,我们假设你已经阅读了cgroup v2内核文档,并且熟悉了大部分的概念术语。...现在需要创建一个BPF_PROG_TYPE_CGROUP_DEVICE类型的bpf程序,并将其附加到所需的cgroup,而不是通过文件来控制它。...这个程序由slurmtepd动态创建,并通过bpf syscall插入内核,它描述了作业、步骤任务中允许或拒绝的设备。 唯一被管理的设备是gres.conf文件中描述的设备。...该选项将在不创建systemd "范围 "的情况下,退回到手动模式创建cgroup目录。只有在调用dbus时返回错误时才会这样,就像使用IgnoreSystemd一样。...dbus-1.0/dbus/dbus.h dbus-devel n/a dBus API for contacting systemd 注意:在没有systemd的系统中,编译Slurm也需要这些库

    1.8K10

    为什么开源的LaZagne会让D-Bus API陷入安全窘境

    D-Bus广泛应用于NetworkManager、PulseAudio、systemdEvolution等流行软件中,它实现了各种系统组件应用程序之间的无缝通信。...没错,现在正有很多网络攻击者正在利用LaZagne并通过Pidgin D-Bus API来转储用户的凭证信息。 LaZagne是如何窃取Pidgin凭证的?...TLDR:LaZagne会连接到Pidgin客户端的D-Bus API,然后在应用程序运行的时候,尝试获取目标用户的账户凭证,包括用户名密码: 下图中的代码显示了LaZagne如何与Pidgin D-Bus...2、D-Bus会与使用dbus.bus.BusConnection(session)创建的每一个会话进行连接,针对Purple对象(以Pidgin D-Bus API实例创建的对象)调用的每一个方法,dbus-python...库都会在内部处理D-Bus消息的创建、发送接收; 3、PurpleAccountGetUsername(_acc)、PurpleAccountGetPassword(_acc)PurpleAccountGetProtocolName

    24320

    如何在 CentOS 8RHEL 8 上安装配置 VNC 服务器

    在CentOS 8RHEL 8系统中,默认情况下未安装VNC服务器,需要手动安装。 在本文中,我们将通过简单的分步安装指南,介绍如何在CentOS 8 / RHEL 8系统上安装VNC服务器。...localhost www.linuxidc.com]# su - linuxidc [linuxidc@localhost ~]$ vncpasswd Password: Verify: Would you like...创建具有以下内容的文件“ /etc/systemd/system/vncserver@.service”,以便为上述本地用户“linuxidc”启动tigervnc-server的服务。...输入您先前为本地用户创建的密码,然后单击“确定”继续。 现在您可以看到远程桌面, 就这样,您已经在Centos 8 / RHEL 8中成功安装了VNC服务器。...总结 希望在CentOS 8/RHEL 8上安装VNC服务器的分步指南为您提供了所有信息,可轻松设置VNC服务器访问远程桌面。 请在下面的反馈部分中提供您的意见建议。

    4.8K11

    Linux netstat命令结果分析

    -n或--numeric 直接使用IP地址,而不通过域名服务器。 -N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。 -o或--timers 显示计时器。...-x或--unix 此参数的效果指定"-A unix"参数相同。 --ip或--inet 此参数的效果指定"-A inet"参数相同。.../var/run/dbus/system_bus_socket unix 2 [ ACC ] STREAM LISTENING 11944...验证办法,尝试减少客户端和服务的长连接.查看效果。 Recv-Q  Send-Q :这两个值通常应该为0,如果不为0可能是有问题的。packets在两个队列里都不应该有堆积状态。...在正常情况下, LISTEN 状态中: Recv-Q 表示的当前等待服务端调用 accept 完成三次握手的 listen backlog 数值,也就是说,当客户端通过 connect() 去连接正在

    2.9K10

    Systemd管理服务

    Systemd 通过不同的文件后缀来区分这些配置文件。...通常用户不会自己创建这样的 Unit 文件 snapshot:用于表示一个由 systemctl snapshot 命令创建Systemd Units 运行状态快照 socket:监控来自于系统或网络的数据消息...:一次性进程,Systemd 会等当前服务退出,再继续往下执行 Type=dbus:当前服务通过D-Bus启动 Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行 Type=...:Systemd 的内部工具,用于显示系统上下文中的各种路径配置 systemd-run:用于将任意指定的命令包装成一个临时的后台服务运行 systemd-stdio- bridge:Systemd 的内部...工具,用于将程序的标准输入输出重定向到系统总线 systemd-tmpfiles:Systemd 的内部工具,用于创建和管理临时文件目录 systemd-tty-ask-password-agent:

    64230

    关于Linux中作业调度 crond systemd.timer 使用场景的一些笔记

    写在前面 分享一些 systemd.timer 相关的笔记 博文内容涉及: systemd.timer 的一些介绍 cron VS systemd.timer 区别 如何创建 systemd.timer...systemd.timer 更独立,但是配置略麻烦,crond配置简单,所以相对功能简单,当前用户的所有任务在一起配置 Systemd 计时器单元基本上是 systemd 服务,随之而来的是所有功能优势...Systemd 计时器单元可以由启动硬件更改等事件触发。 可以使用 systemctl 轻松管理,禁用或启用。 定时器单元可以使用实时或单调时间。...┌──[root@liruilongs.github.io]-[~] └─$ 当然如果是一次性的,我们可以使用 systemc-run 命令来处理, systemc-run 命令可以创建一些临时的...systemd units ,比如常见的临时命令利用 Cgroup 限制资源, ┌──[root@liruilongs.github.io]-[~] └─$systemd-run --on-active

    89620

    systemd --user进程CPU占用高问题分析

    ,点“X”号关闭窗口,对应systemd进程不能被销毁; 3.web端通过部门内部运维平台连接内部虚拟机环境,点“X”号关闭窗口,对应systemd进程不能被销毁; 于是对于systemd进程销毁得出如下结论...cat /proc/mounts |wc 1017 6102 341121 于是瞬间也有了结论: systemd 进程cpu使用率太高是因为mount挂载点太多,mount有更新后,通过dbus...对于什么情况下出现systemd占用高,我们得出如下结论: systemd版本大于226(ubuntu1604为229)+docker版本为19.03.14,无论runc做了什么操作,dbus会通知systemd...2.针对runc活动导致systemd进程吃CPU问题,google GKE 团队给出如下优化方案: image.png 四、总结 1.systemd进程如何创建systemd版本大于226(...3.systemd进程为何吃cpu:systemd版本大于226(ubuntu1604为229)+docker版本为19.03.14,无论runc做了什么操作,dbus会通知systemd重新遍历 mount

    2.9K51

    最简明扼要的 Systemd 教程,只需十分钟

    systemctl常用命令介绍~~~ Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。...Systemd是一个系统管理守护进程、工具库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理配置类UNIX系统。...Systemd 的其中一个目标就是简化这些事物之间的相互作用,因此如果你有程序需要在某个挂载点被创建或某个设备被接入后开始运行,Systemd 可以让这一切正常运作起来变得相当容易。...开启与停止     现在您也许陷入了沉思:我们已经看了这么多,但仍没看到如何停止开启服务!这其实是有原因的。从外部看,Systemd 也许很复杂,像野兽一般难以驾驭。...#Type=dbus :若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。

    2.2K20
    领券