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 ...
随机推荐
- 🎀idea-java序列化serialversionUID自动生成
简介 java.io.Serializable 是 Java 中的一个标记接口(marker interface),它没有任何方法或字段.当一个类实现了 Serializable 接口,那么这个类的对 ...
- Selenium反屏蔽处理
Selenium自动化过程,在浏览器内会显示如下字样 当出现此内容时,有些网站就会判定是机器在进行操作,然后网站会加载防机器操作程序,如下图滑块验证 触发反机器操作的原理大概如下 解决方法 具体代码, ...
- doctrine执行原生sql并直接返回结果集
直接返回结果集: getConnection反回了\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\Connection.php接口的实现,所以Connec ...
- centos7配置复杂度
CentOS7/RHEL7 开始使用pam_pwquality模块进行密码复杂度策略的控制管理.pam_pwquality替换了原来Centos6/RHEL6中的pam_cracklib模块,并向后兼 ...
- 鸿蒙NEXT开发实用技巧:通用工具类
今天分享一个幽蓝君自己在开发中的小技巧,就是封装一个通用工具类,之前大家如果下载过幽蓝君的代码可能也会发现这个东西.比如我们在开发中有一些比较常用的颜色.尺寸或者方法,都可以用一个类封装起来,这样不仅 ...
- 仿EXCEL插件,智表ZCELL产品V3.0 版本发布,底层采用canvas全部重构,功能大幅扩展,性能极致提升,满足千万级单元格加载
本次更新是底层全部重构,按照现代浏览器要求,采用canvas方式进行了重构,预留了将来扩展空间,特别是在大数据量性能提升方面有了较大提升,可以满足千万级单元格加载,欢迎大家体验使用. 体验地址:zce ...
- MongoDB从入门到实战之Windows快速安装MongoDB
前言 本章节的主要内容是在 Windows 系统下快速安装 MongoDB 并使用 Navicat 工具快速连接. MongoDB从入门到实战之MongoDB简介 MongoDB从入门到实战之Mong ...
- TVM Pass优化 -- 公共子表达式消除(Common Subexpr Elimination, CSE)
定义(What) 公共子表达式消除 就是如果表达式E的值已经计算的到了,并且自计算的到值后E的值就不再改变了,就说,表达式E在后续计算中是一个公共表达式. 简单说,该表达式上面已经执行过了,下面没必要 ...
- B1061 判断题 (15 分)
描述 判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分. 输入格式: 输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量.第二行给出 ...
- String to Integer (atoi)——LeetCode进阶路⑧
原题链接https://leetcode.com/problems/string-to-integer-atoi/ 说实话,看到这道题之前,看这通过率有点慌,到底是因为啥 让一道medium的题目这么 ...