killall bluetoothd 一直不成功
最后调查发现是bluetman 惹得祸
贴上他的守护程序,以后也可以写一个
#! /usr/bin/python3
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
from __future__ import unicode_literals
import sys
import os.path
import os
import signal
import dbus
from dbus.mainloop.glib import DBusGMainLoop
from blueman.Constants import *
import gi
gi.require_version("Gtk", "3.0")
gi.require_version('Notify', '0.7')
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import GObject
from gi.repository import Notify
try: import __builtin__ as builtins
except ImportError: import builtins
DBusGMainLoop(set_as_default=True)
#support running uninstalled
_dirname = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
if os.path.exists(os.path.join(_dirname, "CHANGELOG.md")):
sys.path.insert(0, _dirname)
from blueman.Functions import *
from blueman.main.DbusService import DbusService
import blueman.plugins.applet
from blueman.plugins.AppletPlugin import AppletPlugin
from blueman.plugins.BasePlugin import BasePlugin
import blueman.bluez as Bluez
from blueman.main.SignalTracker import SignalTracker
from blueman.main.PluginManager import PersistentPluginManager
# Workaround introspection bug, gnome bug 622084
signal.signal(signal.SIGINT, signal.SIG_DFL)
signal.signal(signal.SIGTERM, signal.SIG_DFL)
class BluemanApplet(object):
def __init__(self):
setup_icon_path()
if not Notify.init("Blueman"):
dprint("Error: Failed to initialize libnotify")
check_single_instance("blueman-applet")
self.Manager = None
self.DbusSvc = DbusService("org.blueman.Applet", "/")
self.Signals = SignalTracker()
self.Plugins = PersistentPluginManager(AppletPlugin, blueman.plugins.applet, self)
self.Plugins.Load()
self.Plugins.Run("on_plugins_loaded")
self.bus = dbus.SystemBus()
self.bus.watch_name_owner("org.bluez", self.on_dbus_name_owner_change)
Bluez.Adapter().handle_signal(self.on_adapter_property_changed, 'PropertyChanged', path_keyword='path')
Gtk.main()
def manager_init(self):
try:
self.Signals.DisconnectAll()
self.Manager = Bluez.Manager()
self.Plugins.Run("on_manager_state_changed", True)
self.Signals.Handle("bluez", self.Manager, self.on_adapter_removed, "AdapterRemoved")
self.Signals.Handle("bluez", self.Manager, self.on_adapter_added, "AdapterAdded")
except dbus.exceptions.DBusException as e:
dprint(e)
self.manager_deinit()
dprint("Bluez DBus API not available. Listening for DBus name ownership changes")
def manager_deinit(self):
self.Signals.DisconnectAll()
self.Manager = None
self.Plugins.Run("on_manager_state_changed", False)
def on_dbus_name_owner_change(self, owner):
dprint("org.bluez owner changed to", owner)
if owner == "":
self.manager_deinit()
elif self.Manager is None:
self.manager_init()
def on_adapter_property_changed(self, key, value, path):
self.Plugins.Run("on_adapter_property_changed", path, key, value)
def on_adapter_added(self, path):
dprint("Adapter added ", path)
def on_activate():
dprint("Adapter activated")
self.Plugins.Run("on_adapter_added", path)
adapter = Bluez.Adapter(path)
wait_for_adapter(adapter, on_activate)
def on_adapter_removed(self, path):
dprint("Adapter removed ", path)
self.Plugins.Run("on_adapter_removed", path)
set_proc_title()
BluemanApplet()
killall bluetoothd 一直不成功的更多相关文章
- 每天一个linux命令(43):killall命令
Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name).我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在 ...
- 每天一个linux命令(35):killall命令
Linux 系统中的killall命令用于杀死指定名字的进程(kill processes by name).我们可以使用kill命令杀死指定进程PID的进 程,如果要找到我们需要杀死的进程,我们还需 ...
- linux命令(7)killall
killall命令: Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name).我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀 ...
- Linux 命令 - killall: 通过进程名向进程发送信号
命令格式 killall [-Z CONTEXT] [-u USER] [ -eIgiqrvw ] [ -SIGNAL ] NAME... killall -l, --list killall -V, ...
- kill,killall,top,free,vmstat,iostat,watch命令
kill命令 Linux 中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以 使用Ctrl+C键,但是,对 ...
- [Linux] killall 、kill 、pkill 命令详解
killall 命令 Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name).我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀 ...
- killall 、kill 、pkill 命令详解
killall 命令 Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name).我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀 ...
- killall 、kill 、pkill 命令详解 【转】
之前常用地kill 命令就是 kill -9 XXid;kill -15 XXid;pkill 进程名: 今天发现killall也有适用场景,killall命令对杀死进程组(一个进程中有多线程的情况) ...
- 网卡配置文件详解 用户管理与文件权限篇 文件与目录权限 软连接 tar解压命令 killall命令 linux防火墙 dns解析设置 计划任务crond服务 软件包安装 阿里云 yum源 安装
Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ...
- THEOS的第一个TWeak的成功创建
THEOS的第一个TWeak的成功创建html, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMi ...
随机推荐
- 🎀dubbo 2.7.2 启动报错【Unsupported generic type false】排查
1.问题现象 dubbo服务启动时抛出异常Unsupported generic type false,但不影响服务正常发布. Caused by: java.lang.IllegalArgument ...
- jmeter使用正则表达式提取器提取返回值中的数据
场景描述:测试过程中,一个场景经常会调用几个接口,且前后接口之间存在参数传递.前一个接口返回值提取后传给后一个接口使用 操作步骤: 第一步,选中被提取参数的接口请求,依次点击右键-添加-后置处理器-正 ...
- Java 里的对象在虚拟机里面是怎么存储的?
Java 中的对象在虚拟机里的存储 在 Java 中,对象在虚拟机中的存储方式取决于 JVM 内存模型,主要存储在 堆(Heap) 中.对象的内存布局和管理方式会影响对象的创建.访问和销毁.下面详细解 ...
- 太喜欢啦,浏览器中的SQL神器:WhatTheDuck让CSV分析像聊天一样简单!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 基于DuckDB的轻量级Web应用 | 完全浏览器端运行 | 零数据泄露风险 | 支持复杂S ...
- 工具 | WExploit
0x00 简介 WExploit是一款基于java开发的漏洞检测工具. 下载地址 WExploit下载:WExploit下载 0x01 功能说明 Struts2 ThinkPHP 海康威视 泛微OA ...
- 【ROS】5.1 ARP攻击Turtlebot3汉堡Burger并解析移动报文
原视频 ARP攻击 实验环境推荐:Linux虚拟机×2:Ubuntu 20.04或18.04或kali,被攻击机安装好ROS: 提升能力环境推荐:不同真机下的Linux虚拟机×2:Ubuntu 20. ...
- Wan2.1 t2v模型Lora Fine-Tune
Wan2.1 t2v模型Lora Fine-Tune 1. Wan2.1模型 Wan2.1是由阿里巴巴开源的AI视频生成大模型,具备强大的视觉生成能力,支持文本到视频(T2V)和图像到视频(I2V)任 ...
- C#开发的PDF文件浏览器 - 开源研究系列文章 - 个人小作品
以前个人的PDF浏览主要是用的Adobe DC的PDF,不过它这个打开速度还是一般.后来安装的极速PDF浏览器,速度还是比较快的了.它这个主要是浏览,然后还能够安装编辑器对PDF文件进行编辑,不过就需 ...
- XmlNamespaceManager与XmlDocument.NameTable浅述
XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); XmlNamespaceManager nsmgr=new XmlNamespaceMan ...
- codeup之冒泡排序
Description 从键盘上输入10个整数,用冒泡法对这10个数进行排序(由小到大). Input 以空格分隔的10个整数 Output 依次输出排好序的10个整数,每个数占一行. Sample ...