AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-200094

WinEunuuchs2Unix's questions

Martin Hope
WinEunuuchs2Unix
Asked: 2020-02-08 16:00:01 +0800 CST

systemd 通过在脚本名称前添加 0000:00:14.0 来破坏 $0

  • 1

我有一个脚本/lib/systemd/system-sleep可以从命令行完美运行:

$ ll /lib/systemd/system-sleep/smartplug

-rwxr-xr-x 1 root root 713 Feb  7 04:55 /lib/systemd/system-sleep/smartplug*

$ sudo /lib/systemd/system-sleep/smartplug pre Suspend

/lib/systemd/system-sleep/smartplug: Going to Suspend...
/lib/systemd/system-sleep/smartplug: Status of: 192.168.0.15 is: OFF

$ sudo /lib/systemd/system-sleep/smartplug post Suspend

/lib/systemd/system-sleep/smartplug: Waking up from Suspend...

但是,当systemd在挂起期间调用脚本时,它会“污染”脚本的名称并从被调用的脚本返回 null:

$ journalctl -b-0 | grep smartplug

Feb 07 05:47:30 alien systemd-sleep[32243]: /lib/systemd/system-sleep/smartplug: Going to suspend...
Feb 07 05:47:30 alien systemd-sleep[32243]: 0000:00:14.0/lib/systemd/system-sleep/smartplug: Status of: 192.168.0.15 is:
Feb 07 16:36:10 alien systemd-sleep[32243]: /lib/systemd/system-sleep/smartplug: Waking up from suspend...

systemd应该说:

Feb 07 05:47:30 alien systemd-sleep[32243]: /lib/systemd/system-sleep/smartplug: Status of: 192.168.0.15 is: OFF

但它在说:

Feb 07 05:47:30 alien systemd-sleep[32243]: 0000:00:14.0/lib/systemd/system-sleep/smartplug: Status of: 192.168.0.15 is:

我以前从未见过这种奇怪的行为。以下是脚本内容:

#!/bin/bash

# NAME: smartplug
# PATH: /lib/systemd/system-sleep
# CALL: Called from SystemD automatically
# DESC: When suspending turn off Kasa smartplugs.
# NOTE: Copy hs100.sh and myip.sh from user directory to /usr/bin.

# DATE: Feb 6 2020.

TMPLIST=/tmp/smartplug-list
PlugArr=( "192.168.0.15" )

case $1/$2 in
  pre/*)
    echo "$0: Going to $2..."
    echo -n '' > "$TMPLIST"

    status=$(hs100.sh -i "${PlugArr[0]}" check | cut -f2)
    echo "$0: Status of: ${PlugArr[0]} is: $status"
    if [[ "$status" == ON ]] ; then
        hs100.sh -i "${PlugArr[0]}" off
        echo "${PlugArr[0]}" >> "$TMPLIST"
    fi
        ;;
  post/*)
    echo "$0: Waking up from $2..."
    rm $TMPLIST
        ;;
esac

回复评论

由于。。。导致的结果lspci -vt

$ lspci -vt
-[0000:00]-+-00.0  Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Host Bridge/DRAM Registers
           +-01.0-[01]--+-00.0  NVIDIA Corporation GM204M [GeForce GTX 970M]
           |            \-00.1  NVIDIA Corporation GM204 High Definition Audio Controller
           +-02.0  Intel Corporation HD Graphics 530
           +-04.0  Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem
           +-14.0  Intel Corporation 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller

由于。。。导致的结果journalctl -b-0 | grep smartplug -A5

这确认断开 PCI 总线是问题消息的根源

--
Feb 07 22:40:15 alien systemd-sleep[14761]: /lib/systemd/system-sleep/smartplug: Going to suspend...
Feb 07 22:40:15 alien systemd-sleep[14761]: /lib/systemd/system-sleep/custom-xhci_hcd: Going to suspend...
Feb 07 22:40:15 alien systemd-sleep[14761]: Failed to connect to non-global ctrl_ifname: (nil)  error: No such file or directory
Feb 07 22:40:15 alien systemd-sleep[14762]: /lib/systemd/system-sleep/wpasupplicant failed with error code 255.
Feb 07 22:40:15 alien systemd-sleep[14762]: /lib/systemd/system-sleep/r8169-reset failed with error code 1.
Feb 07 22:40:15 alien kernel: xhci_hcd 0000:00:14.0: remove, state 4
--
Feb 07 22:40:15 alien systemd-sleep[14761]: 0000:00:14.0/lib/systemd/system-sleep/smartplug: Status of: 192.168.0.15 is:
Feb 07 22:40:15 alien kernel: usb 1-9: USB disconnect, device number 9
Feb 07 22:40:15 alien acpid[1320]: input device has been disconnected, fd 22
Feb 07 22:40:15 alien kernel: xhci_hcd 0000:00:14.0: USB bus 1 deregistered
Feb 07 22:40:15 alien kernel: xhci_hcd 0000:39:00.0: remove, state 4
Feb 07 22:40:15 alien kernel: usb usb4: USB disconnect, device number 1
--

请注意,他们的行xhci_hcd 0000:00:14.0: USB bus 1 deregistered是一个脚本custom-xhci_hcd,其工作是断开所有 USB 设备(解除绑定/关闭电源)。它导致smartplug脚本失败,因为它需要 WiFi 才能关闭 Kasa Smartplug。

我还没有走出困境,因为当笔记本电脑挂起时,Smartplug 仍然没有关闭电视灯。我认为这是由于网络管理器过快地关闭 WiFi,但需要进行更多调查。

禁用后custom-xhci_hcd(几年前写的,但内核可能不再需要4.14.170这是journalctl:

--
Feb 08 09:14:44 alien systemd-sleep[3032]: /lib/systemd/system-sleep/smartplug: Going to suspend...
Feb 08 09:14:44 alien systemd-sleep[3032]: Failed to connect to non-global ctrl_ifname: (nil)  error: No such file or directory
Feb 08 09:14:44 alien systemd-sleep[3033]: /lib/systemd/system-sleep/wpasupplicant failed with error code 255.
Feb 08 09:14:44 alien eyesome[3127]: Wakeup: Creating /tmp/eyesome-is-suspending
Feb 08 09:14:44 alien systemd-sleep[3032]: /lib/systemd/system-sleep/smartplug: Status of: 192.168.0.15 is:
Feb 08 09:14:44 alien systemd-sleep[3033]: /lib/systemd/system-sleep/display-auto-brightness failed with error code 1.
Feb 08 09:14:45 alien systemd-sleep[3033]: /lib/systemd/system-sleep/lag-suspend.sh failed with error code 1.
Feb 08 09:14:45 alien systemd-sleep[3033]: /lib/systemd/system-sleep/r8169-reset failed with error code 1.
Feb 08 09:14:45 alien systemd-sleep[3033]: /lib/systemd/system-sleep/iwlwifi-reset failed with error code 1.
Feb 08 09:14:45 alien systemd-sleep[3032]: Suspending system...
--
Feb 08 09:14:57 alien systemd-sleep[3032]: /lib/systemd/system-sleep/smartplug: Waking up from suspend...
Feb 08 09:14:57 alien systemd-sleep[3032]: Failed to connect to non-global ctrl_ifname: (nil)  error: No such file or directory
Feb 08 09:14:57 alien kernel: PM: suspend exit
Feb 08 09:14:57 alien eyesome[3346]: Wakeup: Called from suspend.
Feb 08 09:14:57 alien systemd-sleep[3032]: /dev/sda:
Feb 08 09:14:57 alien systemd-sleep[3032]:  setting Advanced Power Management level to 0xfe (254)

脚本中的其他错误代码/lib/systemd/system-sleep是因为脚本不可执行,但由于历史原因而保留。

rick@alien:/lib/systemd/system-sleep$ ll
total 68
drwxr-xr-x 2 root root 4096 Feb  7 04:55 ./
drwxr-xr-x 8 root root 4096 Feb  6 16:53 ../
-rw-r--r-- 1 root root 1079 Oct 28  2018 custom-xhci_hcd
-rw-r--r-- 1 root root 1079 Oct 28  2018 custom-xhci_hcd~
-rw-r--r-- 1 root root 1539 Jun 10  2018 display-auto-brightness
-rwxr-xr-x 1 root root   92 Mar 17  2016 hdparm*
-rw-r--r-- 1 root root  716 Apr 22  2017 iwlwifi-reset
-rw-r--r-- 1 root root  572 Oct 28  2018 lag-suspend.sh
-rw-r--r-- 1 root root  522 Oct 21  2018 lag-suspend.sh~
-rw-r--r-- 1 root root 2820 Aug  5  2018 r8169-reset
-rwxr-xr-x 1 root root  713 Feb  7 04:55 smartplug*
-rwxr-xr-x 1 root root  661 Feb  7 04:53 smartplug~*
-rwxr-xr-x 1 root root 1114 Oct 28  2018 sound*
-rwxr-xr-x 1 root root 1171 Aug  5  2018 sound~*
-rwxr-xr-x 1 root root  317 Aug 29 05:44 systemd-wake-eyesome*
-rwxr-xr-x 1 root root  219 Apr 29  2019 unattended-upgrades*
-rwxr-xr-x 1 root root  182 Oct 26  2015 wpasupplicant*

由于。。。导致的结果cat -v

根据评论请求:

$ sudo /lib/systemd/system-sleep/smartplug pre Suspend |& cat -v
/lib/systemd/system-sleep/smartplug: Going to Suspend...
/lib/systemd/system-sleep/smartplug: Status of: 192.168.0.15 is: ON

注意管道|& cat -v不会改变输出。

bash systemd
  • 1 个回答
  • 59 Views
Martin Hope
WinEunuuchs2Unix
Asked: 2019-10-11 18:21:53 +0800 CST

检查 Nautilus 文件管理器是否正在运行的最佳方法?

  • 2

我一直在努力解决这个问题。当 nautilus 文件管理器未运行时,nautilus 正在运行,因为它控制桌面上的图标。

$ ps -aux | grep nautilus | grep -v grep
rick      5613  0.2  1.7 2355392 140012 pts/19 Sl+  19:04   0:08 nautilus

所以在没有打开 nautilus 文件管理器的情况下使用这个命令,你会看到:

$ ps -L -p 5613 -o pid,nice,lwp,comm
  PID  NI   LWP COMMAND
 5613   0  5613 nautilus
 5613   0  5614 gmain
 5613   0  5615 gdbus
 5613   0  5617 dconf worker

现在打开 nautilus 文件管理器并重做ps命令:

$ nautilus

$ ps -L -p 5613 -o pid,nice,lwp,comm
  PID  NI   LWP COMMAND
 5613   0  5613 nautilus
 5613   0  5614 gmain
 5613   0  5615 gdbus
 5613   0  5617 dconf worker
 5613   0  4788 pool

关闭 nautilus 文件窗口并重新运行命令(等待一两秒后),池就会消失。

这是查看 nautilus 文件管理器是否正在运行的正确方法吗?

我已将上述技术整合到Ask Ubuntu中的答案中,如果可能的话我想改进:

  • 如果我退出程序,如何自动重新启动 nautilus?
gnome
  • 1 个回答
  • 1106 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve