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 ...
随机推荐
- jmeter使用json断言校验返回结果
jmeter断言有好几种方式,本案讲json断言 http请求返回数据的格式有json格式,如下图,比如需要验证"ShipperRealName"参数的值 步骤如下: 第一步,选中 ...
- 在 Go 中,如何实现一个带过期时间的字典映射
有些时候,应用系统用不上 redis,我们也可以用锁和 goroutine 实现一个带有过期时间的线程安全的字典. 这种字典的应用场景,比较倾向于数据规模较小,没有分布式要求. 下面是实现: 1.定义 ...
- SpringBoot整合JDBC--数据源
目录 1 新建SpringBoot项目 1.1 导入pom依赖文件 2 通过@PropertySource注解读取配置文件 2.1 新建jdbc.properties文件 2.2 新建配置类,加载配置 ...
- 后缀数组(SA)
后缀数组 P3809 [模板]后缀排序 定义: 对给定字符串的所有后缀排序后得到的sa.rk数组 sa[i]->排名为i的后缀的位置 rk[i]->位置为i的后缀的排名 容易发现,sa与r ...
- 解决VMware虚拟机安装centos无法联网问题
网上的教程几乎试了个遍,最后使用该方法成功解决. 用终端进入目录:/etc/sysconfig/network-scripts 执行ls命令查看以"ifcfg-en"开头的文件,例 ...
- Itex+freemarker 导出PDF文件时✓无法正常显示
在使用Itex+freemarker 导出PDF文件时✓无法正常显示 在网上看到了以下思路:经过实验后是靠谱的 1.首先打开一个word文件,输入这个特殊字符,然后在字体选择框里看见这个特殊字符所用的 ...
- python根据日期、随机数生成编码
import datetime import random import string """ 编码格式:YYYYMMDD 身份证后四位.四位随机数 "& ...
- ShadowSql之表达式树
ShadowSql的主要思想通过表和字段的影子来拼写sql .net中的表达式树是作为模型类的影子,非常契合ShadowSql 拿表达式树来拼写sql就和EF类似 一.nuget包 nuget安装Sh ...
- windows环境下的常用命令
1.appwiz.cpl 程序和功能 2.certmgr.msc 证书管理实用程序 3.control 控制面板 4.firewall.cpl 防火墙 5.fsmgmt.msc 共享文件夹管理器 6. ...
- Python 潮流周刊#104:Python 考虑添加虚拟线程啦?(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...