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-690165

Tracy's questions

Martin Hope
Tracy
Asked: 2021-02-04 21:13:14 +0800 CST

从挂起恢复时执行脚本的正确方法

  • 7

Ubuntu 20.04

我已经对从挂起恢复执行脚本或命令的方法进行了多次搜索,并提出了几种不同的方法来执行此操作,例如此处描述的方法- 没有一个对我有用。

我发现的第一个方法是使用 pm-utils。显然,从 15.04 左右开始,此方法已从 Ubuntu中删除

我发现的下一件事是使用systemd/system-sleep - 这对我也不起作用。我尝试在 /usr/lib/systemd/system-sleep 目录中创建一个脚本,还尝试了 /lib/systemd/system-sleep 目录(它显然链接到 /usr/lib/systemd/system-sleep 作为更改一个出现在另一个中)。我还尝试修改已经存在的脚本,称为 hdparm - 这也不起作用(我所做的修改是,touch /tmp/xmodlog.log但文件从未出现)。

那么,有人能告诉我在恢复时运行脚本或命令的正确方法是什么吗?

感谢任何输入/建议/网站 - 特别是那些对沿途发生的事情有详细说明和解释的网站......

编辑:

根据 Matigo 提供的答案,我做了以下事情:

在 /etc/pm/sleep.d 中,我创建了一个名为 00xmodkey.sh 的脚本。我将以下脚本代码添加到此文件中,然后确保它由 root 拥有,并且具有执行权限。

脚本内容(尝试 sh 和 bash 作为 shell):

#!/bin/sh

case "${1}" in
    resume|thaw) 
        touch /tmp/xmodlog.log
        echo "$(date) - lib testing" >> /tmp/xmodlog.log
        ;;
esac

已验证所有权和权限:

ls -l 00xmodkey.sh
-rwxr-xr-x 1 root root 257 Feb  4 22:49 00xmodkey.sh

然后我将系统置于暂停状态。等了~20秒。唤醒系统。在 /tmp 中查找名为 xmodlog.log 的文件。无文件。

所以,我一定还是错过了什么……

编辑2:

根据 blitzter47 的响应,我在/lib/systemd/system-sleep/20xmodmap 中放置了一个脚本,随后我将其标记为可执行文件。脚本文件包含以下内容:

#!/bin/sh
# Remap a key to allow context menu access

case "$1" in
    post) 
        echo "$(date) - lib testing" >> /tmp/xmodlog.log
        ;;
    *)
        echo "$(date) - $(1) $(2) - lib testing" >> /tmp/xmodlog.log
        ;;
esac

exit 0

文件 xmodlog.log 永远不会出现在 /tmp 中,因此要么脚本有问题,要么脚本永远不会被执行。

编辑3:

根据下面的评论,我将脚本更改为显式路径命令,并使用touch而不是echo. 结果没有变化。还尝试移动临时文件的位置,以确保它不会因为使用而发生奇怪的事情/tmp,但同样没有变化。这是修改后的脚本:

#!/bin/sh
# Remap a key to allow context menu access

case "$1" in
    post) 
        /bin/touch /home/tracy/xmodlog.log
        ;;
    *)
        /bin/touch /home/tracy/xmodlog.log
        ;;
esac

exit 0

因此,即使所有内容都明确路径,并使用我知道我的用户可以访问的文件夹(系统应该可以访问任何内容,如果它在系统上下文中运行),它似乎仍然无法正常工作。

编辑4:

从“sudo systemctl status sleep.target suspend.target hibernate.target hybrid-sleep.target”请求输出:

tracy@tracy-HP17:~$ sudo systemctl status sleep.target suspend.target hibernate.target hybrid-sleep.target
● sleep.target - Sleep
     Loaded: loaded (/lib/systemd/system/sleep.target; static; vendor preset: e>
     Active: inactive (dead)
       Docs: man:systemd.special(7)

● suspend.target - Suspend
     Loaded: loaded (/lib/systemd/system/suspend.target; static; vendor preset:>
     Active: inactive (dead)
       Docs: man:systemd.special(7)

● hibernate.target - Hibernate
     Loaded: loaded (/lib/systemd/system/hibernate.target; static; vendor prese>
     Active: inactive (dead)
       Docs: man:systemd.special(7)

● hybrid-sleep.target - Hybrid Suspend+Hibernate
     Loaded: loaded (/lib/systemd/system/hybrid-sleep.target; static; vendor pr>
     Active: inactive (dead)
       Docs: man:systemd.special(7)

编辑5:

因此,我进入并清理了脚本,并确保一切正常(从命令行运行)。以下是设置和运行脚本的命令和输出:

tracy@tracy-HP17:/usr/lib/systemd/system-sleep$ which ls
/usr/bin/ls
tracy@tracy-HP17:/usr/lib/systemd/system-sleep$ which echo
/usr/bin/echo
tracy@tracy-HP17:/usr/lib/systemd/system-sleep$ ls -la /lib/systemd/system-sleep
total 32
drwxr-xr-x  2 root root  4096 Mar  9 21:30 .
drwxr-xr-x 17 root root 12288 Jan 19 13:39 ..
-rwxr-xr-x  1 root root   405 Mar  9 21:22 20xmodmap
-rwxr-xr-x  1 root root   148 Feb 26 22:01 hdparm
-rw-r--r--  1 root root   404 Mar  9 20:54 holding.txt
-rwxr-xr-x  1 root root   219 Jul 21  2020 unattended-upgrades
tracy@tracy-HP17:/usr/lib/systemd/system-sleep$ nl 20xmodmap
     1  #!/bin/sh
     2  # Remap a key to allow context menu access
       
     3  /usr/bin/ls /home/tracy/TestScript/
       
     4  case "$1" in
     5      post) 
     6  #       /usr/bin/touch /home/tracy/TestScript/xmodlog.log
     7          /usr/bin/echo "post" > /home/tracy/TestScript/xmodlog.log
     8          ;;
     9      *)
    10  #       /usr/bin/touch /home/tracy/TestScript/xmodlog.log
    11          /usr/bin/echo "default" > /home/tracy/TestScript/xmodlog.log
    12          ;;
    13  esac
       
    14  /usr/bin/ls /home/tracy/TestScript/
       
    15  exit 0
tracy@tracy-HP17:/usr/lib/systemd/system-sleep$ ls /home/tracy/TestScript
tracy@tracy-HP17:/usr/lib/systemd/system-sleep$ sudo ./20xmodmap
[sudo] password for tracy: 
xmodlog.log
tracy@tracy-HP17:/usr/lib/systemd/system-sleep$ ls /home/tracy/TestScript
xmodlog.log
tracy@tracy-HP17:/usr/lib/systemd/system-sleep$ nl /home/tracy/TestScript/xmodlog.log
     1  default
tracy@tracy-HP17:/usr/lib/systemd/system-sleep$ rm /home/tracy/TestScript/xmodlog.log
rm: remove write-protected regular file '/home/tracy/TestScript/xmodlog.log'? y
tracy@tracy-HP17:/usr/lib/systemd/system-sleep$ ls /home/tracy/TestScript

此外,下面是 journalctl 在睡眠前和恢复后显示的最后两行(按时间戳):

睡前最后两行

tracy@tracy-HP17:/usr/lib/systemd/system-sleep$ journalctl -xe | grep 'sleep\|suspend'
Mar 09 21:30:21 tracy-HP17 sudo[132552]:    tracy : TTY=pts/0 ; PWD=/usr/lib/systemd/system-sleep ; USER=root ; COMMAND=./20xmodmap
Mar 09 21:37:40 tracy-HP17 sudo[132821]:    tracy : TTY=pts/0 ; PWD=/usr/lib/systemd/system-sleep ; USER=root ; COMMAND=./20xmodmap

简历后的最后两行

tracy@tracy-HP17:/usr/lib/systemd/system-sleep$ journalctl -xe | grep 'sleep\|suspend'
Mar 09 21:30:21 tracy-HP17 sudo[132552]:    tracy : TTY=pts/0 ; PWD=/usr/lib/systemd/system-sleep ; USER=root ; COMMAND=./20xmodmap
Mar 09 21:37:40 tracy-HP17 sudo[132821]:    tracy : TTY=pts/0 ; PWD=/usr/lib/systemd/system-sleep ; USER=root ; COMMAND=./20xmodmap

似乎脚本没有在恢复时运行,因为 journalctl 之前和之后的输出是相同的......

编辑6:

好的,所以根据 blitzter47 下面的评论,我从电源管理的角度深入研究了这里发生的一切。看起来我对正在发生的事情有一些(不正确的)先入之见。

首先,按照注释中的引导,发出sudo systemctl suspend然后唤醒系统确实会执行位于 中的脚本/lib/systemd/system-sleep,如正在创建的目标文件中包含“post”一词所示。这是第一次(除了从命令行执行脚本)发生这种情况(我很高兴正在取得这一进展)。

所以,这让我想知道那个命令有什么不同,以及我一直在做什么。在阅读了解挂起的文章后,我相信发生的事情是我正在达到 S1 状态,但sudo systemctl suspend命令正在达到 S3 状态。或者,换一种说法,我只是锁定了屏幕,并没有真正暂停计算机(除非机器长时间无人看管,我将在稍后谈到)。

因此,我回顾了我实际尝试完成的任务——即在系统“暂停”时使特定的键盘快捷键继续存在。我之前注意到,当我回到计算机时,键盘快捷键在某些情况下会保留下来,而在某些情况下则不会,但我并没有弄清楚它的确切来源。好吧,我现在假设它存活的时间是系统只是锁定屏幕(即达到 S1 状态)但实际上并没有挂起(即没有达到 S3 状态)的时间。虽然键盘快捷键无法生存,但机器实际上已经达到了可疑 (S3) 状态——可能是因为长时间不受干扰。

因此,底线似乎是 system-sleep对于我正在尝试做的事情确实可以正常工作(现在我真的明白那是什么了)。因此,我的下一步将是使用命令从 Edit 5(当我达到挂起(即 S3 状态)时正常工作)实际更新脚本以恢复我的键盘快捷键,然后查看是否存在键盘快捷键的情况无法生存,然后重新评估当时正在发生的事情。

因此,鉴于所有这些,我将blitzter47 的原始答案标记为已接受,并且如果/当我注意到我的键盘快捷键无法在特定状态下存活时,我将发布一个新问题(希望)更好地了解根本原因是什么。

20.04
  • 2 个回答
  • 4333 Views
Martin Hope
Tracy
Asked: 2020-12-04 20:36:34 +0800 CST

20.04 - 将右 Alt 键映射为菜单键

  • 3

Ubuntu 20.04.1、Gnome 3.36.3、XOrg 7.7,全新安装在 HP 笔记本电脑上 (17-by1xxx)。

此笔记本电脑键盘没有Menu键(即,在应用程序中激活上下文菜单的键 - 例如通过鼠标右键单击会发生)。我想设置右键Alt(这个键盘有左键和右键Alt)以这种能力起作用。

我已经对 Google 进行了多次搜索,并找到了一些潜在的“解决方案”,但其中大多数似乎是针对旧版本的 Ubuntu(早在 11.04 和 12.04 天),或者它们特定于 Unity,或者列出的方法在 20.04 中似乎无法使用(或者至少已弃用)。

我找到了 Gnome-Tweak-Tool 和“附加布局选项”菜单,但我显然不了解其中一些选项的含义以及它们会产生什么影响。

所以,我的问题:

  1. 是否对“附加布局选项”中显示的所有选项的含义进行了“幼儿园”级别的讨论(比选项本身附带的短语更详细),如果有,在哪里可以找到这个?

  2. 是否有隐藏在附加布局选项中的选项可以让我使用右键Alt作为Menu键(我找到了一个选项来制作Caps Lock一个Menu键,但我Caps Lock不小心打得太频繁了,无法做出有用的选择”)。

我已经(简要地)查看了 xKeyboard-config 文件,但我很快就超出了我的深度(我是一个相当“新手”的用户,并且不熟悉这里发生的所有“幕后”事情),因此,将不胜感激对所有这些如何组合在一起进行更详细的讨论-尽管简单的“执行此操作,然后执行此操作,然后执行此操作……”现在对我有用。

我还花了一些时间查看 xmodmap,但如果我理解正确,这只会影响当前会话,因此每次系统重新启动时都需要运行(这可以使用登录时运行的脚本来完成)?我还发现一些地方提到这在某种程度上是处理器密集型的,并且它可能会受到锁定和解锁计算机的影响(或者我可能将它与 setxkbmap 混为一谈 - 到目前为止,这已经是漫长的一天,我应该当我更新鲜时真的接近这个)......

在任何情况下,任何和所有帮助(包括指向背景阅读材料的指针)都将受到赞赏。

编辑:

感谢 UnKNOWn 的帮助。我能够使用 xmodmap 来改变Right-Alt行为。我最终使用了Shift+ Right-Alt,它工作正常。我使用的实际步骤是对 UnKNOWn 的说明稍作修改:

# Get the original key assignments, in case we want to go back
xmodmap -pke
# Find key 108 in the list
# In my case, it is:
#     keycode 108 = Alt_R Meta_R Alt_R Meta_R
# Modify that to produce the menu key effect desired
#     keycode 108 = Alt_R Menu Alt_R Meta_R
# Send it back to xmodmap to test it
xmodmap -e "keycode 108 = Alt_R Menu Alt_R Meta_R"

将最后一行添加到启动应用程序(无论是直接还是通过将其保存在脚本中并添加脚本)解决了我的问题。

再次感谢,未知。

keyboard remapping gnome-tweaks 20.04
  • 1 个回答
  • 1296 Views
Martin Hope
Tracy
Asked: 2017-11-02 19:25:12 +0800 CST

视频应用程序实际上并不显示视频,只显示音频

  • 6

Ubuntu 17.10,全新安装,默认视频播放器(图腾?)

视频应用程序出现问题。当我尝试播放视频时,我得到了音频,但没有视频(只是一个黑色窗口)。视频似乎正在播放(我可以使用底部的滑块在视频中从一个点切换到另一个点 - 它在视频中显示不同的时间点,并继续从那里“播放” - 但从来没有任何实际图像,只是音频)。我尝试播放的任何视频都会发生这种情况。请注意,缩略图应用程序正在正确读取视频,因为它会为每个视频生成适当的缩略图。

这似乎不是硬件问题,因为我安装了多个版本的 Ubuntu(在不同的分区上),并且相同的视频文件在旧版本(16.04、17.04)上播放没有问题。

我已经安装了 ubuntu-restricted-extras 包以获得适当的编解码器等 - 它安装没有问题。

从终端运行它时,会产生以下错误: (totem:2345): GLib-CRITICAL **: g_key_file_load_from_file: assertion 'file != NULL' failed

系统日志给出:

Nov 15 17:10:44 -HP-Compaq-8200-Elite-CMT-PC totem[10043]: Native Windows taller than 65535 pixels are not supported Nov 15 17:10:45 -HP-Compaq-8200-Elite-CMT-PC totem[10043]: g_key_file_load_from_file: assertion 'file != NULL' failed Nov 15 17:10:52 -HP-Compaq-8200-Elite-CMT-PC dbus[613]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' Nov 15 17:10:52 -HP-Compaq-8200-Elite-CMT-PC systemd[1]: Starting Hostname Service... Nov 15 17:10:52 -HP-Compaq-8200-Elite-CMT-PC dbus[613]: [system] Successfully activated service 'org.freedesktop.hostname1' Nov 15 17:10:52 -HP-Compaq-8200-Elite-CMT-PC systemd[1]: Started Hostname Service. Nov 15 17:10:58 -HP-Compaq-8200-Elite-CMT-PC totem[10043]: Drawing a gadget with negative dimensions. Did you forget to allocate a size? (node slider owner GtkScale)3-HP-Compaq-8200-Elite-CMT-PC totem[10170]: Native Windows taller than 65535 pixels are not supported Nov 15 17:14:58 HP-Compaq-8200-Elite-CMT-PC totem[10170]: Drawing a gadget with negative dimensions. Did you forget to allocate a size? (node slider owner GtkScale) Nov 15 17:14:58 -HP-Compaq-8200-Elite-CMT-PC totem[10170]: Drawing a gadget with negative dimensions. Did you forget to allocate a size? (node slider owner GtkScale) Nov 15 17:15:32 -HP-Compaq-8200-Elite-CMT-PC gnome-software[2504]: running search with refine-flags=require-license,require-description,require-rating,require-version,require-history,require-setup-action,require-origin,require-provenance,require-review-ratings,require-icon,require-permissions,require-origin-hostname with failure-flags=use-events with timeout=10 with max-results=50 with search=totem on plugin=snap on apps system/snap/Snap Store/desktop/minidlna-escoand/*,system/package/ubuntu-artful-main/desktop/org.gnome.Totem.desktop/* took 713ms Nov 15 17:15:40 -HP-Compaq-8200-Elite-CMT-PC gnome-software[2504]: running refine with refine-flags=require-license,require-url,require-size,require-version,require-history,require-setup-action,require-origin,require-menu-path,require-addons,require-provenance,require-icon,require-permissions,require-origin-hostname,require-runtime,require-screenshots with failure-flags=use-events with timeout=60 on apps system/package/ubuntu-artful-main/desktop/org.gnome.Totem.desktop/* Nov 15 17:15:41 -HP-Compaq-8200-Elite-CMT-PC gnome-software[2504]: running refine with refine-flags=require-rating,require-reviews,require-review-ratings with failure-flags=use-events with timeout=60 on apps system/package/ubuntu-artful-main/desktop/org.gnome.Totem.desktop/* took 1022ms

有什么建议么?

[编辑 11/17] 今天在进行例行更新时对 gstreamer 进行了更新,现在一些文件显示视频,而其他文件则不显示。这是不显示视频的流信息(使用 ffprobe 检索的流信息):

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 493 kb/s, 29.97 fps, 29.97 tbr, 11988 tbn, 59.94 tbc (default)
Metadata:
  handler_name    : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 48 kb/s (default)
Metadata:
  handler_name    : SoundHandler

[编辑 1/9/18] 尝试从命令窗口启动视频时的输出:

tracy@tracy-hp:/mnt/7BC9480105AD511D/Test$ totem Testing.mp4

(totem:8700): Gtk-WARNING **: Drawing a gadget with negative dimensions. Did you forget to allocate a size? (node slider owner GtkScale)

(totem:8700): Gtk-WARNING **: Drawing a gadget with negative dimensions. Did you forget to allocate a size? (node slider owner GtkScale)
tracy@tracy-hp:/mnt/7BC9480105AD511D/Test$ 

仍然没有视频输出。值得注意的是(关于发布的其他评论)我确实安装了 gstreamer1.0-plugins-ugly(用于支持 h264)。以下是安装的 gstreamer 软件包:

gstreamer1.0-alsa/artful,now 1.12.3-1 amd64 [installed]
gstreamer1.0-clutter-3.0/artful,now 3.0.24-1 amd64 [installed]
gstreamer1.0-fluendo-mp3/artful,now 0.10.32.debian-1 amd64 [installed,automatic]
gstreamer1.0-libav/artful,now 1.12.2-1 amd64 [installed]
gstreamer1.0-nice/artful,now 0.1.13-2 amd64 [installed,automatic]
gstreamer1.0-packagekit/artful,now 1.1.7-1 amd64 [installed]
gstreamer1.0-plugins-bad/artful,now 1.12.3-1ubuntu1 amd64 [installed]
gstreamer1.0-plugins-base/artful,now 1.12.3-1 amd64 [installed]
gstreamer1.0-plugins-base-apps/artful,now 1.12.3-1 amd64 [installed]
gstreamer1.0-plugins-good/artful,now 1.12.3-1ubuntu1 amd64 [installed]
gstreamer1.0-plugins-ugly/artful,now 1.12.3-1 amd64 [installed,automatic]
gstreamer1.0-pulseaudio/artful,now 1.12.3-1ubuntu1 amd64 [installed]
gstreamer1.0-tools/artful,now 1.12.3-1 amd64 [installed]
gstreamer1.0-vaapi/artful,now 1.12.3-1ubuntu1 amd64 [installed,automatic]
gstreamer1.0-vaapi-doc/artful,artful,now 1.12.3-1ubuntu1 all [installed]
gstreamer1.0-x/artful,now 1.12.3-1 amd64 [installed]

附加编辑 1/9/18:感谢 Roberto Lineros。删除 gstreamer1.0-vaapi 似乎为我解决了这个问题。现在正在播放视频,包括 h264 视频(mp4 格式)。

sound
  • 3 个回答
  • 2053 Views

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve