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

Kamil Maciorowski's questions

Martin Hope
Kamil Maciorowski
Asked: 2024-03-21 20:07:27 +0800 CST

为什么带有负参数的“nice”(例如“nice -15”)会增加好感度?

  • 15

我的nice来自 GNU coreutils 9.1。我观察到这nice -15相当于nice -n 15:

     nice               # prints 0 for me, the base niceness is 0
     nice -n  15 nice   # prints 15, this is expected
sudo nice -n -15 nice   # prints -15, this is expected
     nice    -15 nice   # prints 15

-15是一个负数。为什么它会增加上面最后一个例子中的友好度?手册(例如在 Debian 12 中)没有解释这一点。

gnu
  • 1 个回答
  • 2191 Views
Martin Hope
Kamil Maciorowski
Asked: 2024-01-16 17:39:05 +0800 CST

“systemd-inhibit --what=idle”的访问被拒绝

  • 6

问题

在 Debian 12 上我使用IdleAction=poweroff和。这按预期工作,机器闲置足够长时间后会自行关闭。IdleActionSec=…logind.conf

我希望能够systemd-inhibit --what=idle作为普通用户使用。我发现它应该是可能的(示例)。事实上,在我的一个 Debian 12 系统中这是可能的,我们称其为 Debian Success;但我还得到了其他 Debian 12 系统Access denied,我们称这些为“失败”。我真正需要此功能的机器位于失败组中。

这不是暂时的怪癖(因为“需要重新启动”或其他原因)。我刚刚重新启动了成功的机器和一台失败的机器,该行为仍然存在。

为什么有区别?我该怎么做才能使失败的系统表现得像成功的系统一样?

我对诸如某些自定义包装器之类的解决方法并不真正感兴趣sudo。我想“只是工作”,就像在成功systemd-inhibit --what=idle系统上那样。我想尽可能地“通过 systemd/polkit 书”调整它的行为。


目前的行为

这就是它在成功系统上的工作方式。这就是我要的:

$ SYSTEMD_LOG_LEVEL=7 systemd-inhibit --what=idle true
Bus n/a: changing state UNSET → OPENING
sd-bus: starting bus by connecting to /run/dbus/system_bus_socket...
Bus n/a: changing state OPENING → AUTHENTICATING
Bus n/a: changing state AUTHENTICATING → HELLO
Sent message type=method_call sender=n/a destination=org.freedesktop.DBus path=/org/freedesktop/DBus interface=org.freedesktop.DBus member=Hello cookie=1 reply_cookie=0 signature=n/a error-name=n/a error-message=n/a
Got message type=method_return sender=org.freedesktop.DBus destination=:1.75 path=n/a interface=n/a member=n/a cookie=1 reply_cookie=1 signature=s error-name=n/a error-message=n/a
Bus n/a: changing state HELLO → RUNNING
Sent message type=method_call sender=n/a destination=org.freedesktop.login1 path=/org/freedesktop/login1 interface=org.freedesktop.login1.Manager member=Inhibit cookie=2 reply_cookie=0 signature=ssss error-name=n/a error-message=n/a
Got message type=method_return sender=:1.7 destination=:1.75 path=n/a interface=n/a member=n/a cookie=149 reply_cookie=2 signature=h error-name=n/a error-message=n/a
Successfully forked off '(inhibit)' as PID 3384.
Skipping PR_SET_MM, as we don't have privileges.
true succeeded.
Bus n/a: changing state RUNNING → CLOSED
$ echo $?
0
$

这就是它在失败系统上失败的方式:

$ SYSTEMD_LOG_LEVEL=7 systemd-inhibit true
Bus n/a: changing state UNSET → OPENING
sd-bus: starting bus by connecting to /run/dbus/system_bus_socket...
Bus n/a: changing state OPENING → AUTHENTICATING
Bus n/a: changing state AUTHENTICATING → HELLO
Sent message type=method_call sender=n/a destination=org.freedesktop.DBus path=/org/freedesktop/DBus interface=org.freedesktop.DBus member=Hello cookie=1 reply_cookie=0 signature=n/a error-name=n/a error-message=n/a
Got message type=method_return sender=org.freedesktop.DBus destination=:1.44 path=n/a interface=n/a member=n/a cookie=1 reply_cookie=1 signature=s error-name=n/a error-message=n/a
Bus n/a: changing state HELLO → RUNNING
Sent message type=method_call sender=n/a destination=org.freedesktop.login1 path=/org/freedesktop/login1 interface=org.freedesktop.login1.Manager member=Inhibit cookie=2 reply_cookie=0 signature=ssss error-name=n/a error-message=n/a
Got message type=error sender=:1.1 destination=:1.44 path=n/a interface=n/a member=n/a cookie=464 reply_cookie=2 signature=s error-name=org.freedesktop.DBus.Error.AccessDenied error-message=Permission denied
Failed to inhibit: Access denied
Bus n/a: changing state RUNNING → CLOSED
$ echo $?
1
$

true这只是一个例子。最终,我想调用一些长时间运行的命令,对此抑制非常有意义。


细节

  • 成功和失败是 Debian 12。

  • 成功和每次失败时的内核是6.1.0-17-amd64。

  • 的输出id:

    @Successful $ id
    uid=1000(kamil) gid=1000(kamil) groups=1000(kamil),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),100(users),106(netdev),111(bluetooth),113(lpadmin),117(scanner),124(pcspkr)
    
    @Failing1 $ id
    uid=1000(kamil) gid=1000(kamil) groups=1000(kamil),4(adm),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(netdev)
    
  • 在每个系统上都/usr/bin/systemd-inhibit给出相同的结果,我得出结论,成功和失败md5sum之间的文件是相同的;它们没有被篡改。印刷:ls -l /usr/bin/systemd-inhibit

     -rwxr-xr-x 1 root root 22928 11-10 01:25 /usr/bin/systemd-inhibit
    
  • 在每个系统上都/usr/share/dbus-1/system.d/org.freedesktop.login1.conf给出相同的结果,我得出结论,成功和失败md5sum之间的文件是相同的;它们没有被篡改。相关(?)部分:

    <busconfig>
    
          <policy user="root">
                  <allow own="org.freedesktop.login1"/>
                  <allow send_destination="org.freedesktop.login1"/>
                  <allow receive_sender="org.freedesktop.login1"/>
          </policy>
    
          <policy context="default">
                  <deny send_destination="org.freedesktop.login1"/>
    [...]
                  <allow send_destination="org.freedesktop.login1"
                         send_interface="org.freedesktop.login1.Manager"
                         send_member="Inhibit"/>
    [...]
                  <allow receive_sender="org.freedesktop.login1"/>
          </policy>
    
    </busconfig>
    
  • 在每个系统上都/usr/share/polkit-1/actions/org.freedesktop.login1.policy给出相同的结果,我得出结论,成功和失败md5sum之间的文件是相同的;它们没有被篡改。相关(?)部分:

    <policyconfig>
    [...]
          <action id="org.freedesktop.login1.inhibit-block-idle">
                  <description gettext-domain="systemd">Allow applications to inhibit automatic system suspend</description>
                  <message gettext-domain="systemd">Authentication is required for an application to inhibit automatic system suspend.</message>
                  <defaults>
                          <allow_any>yes</allow_any>
                          <allow_inactive>yes</allow_inactive>
                          <allow_active>yes</allow_active>
                  </defaults>
          </action>
    [...]
    </policyconfig>
    

    我想这<allow_any>yes</allow_any>就是所谓的普通用户使用能力的原因systemd-inhibit --what=idle。仍然在失败的系统上,它似乎被忽略了。

  • 成功的Debian 直接使用其硬件。HP ProLiant DL380 G5 上安装了一台失败的Debian;其他失败的Debian 是 VMware ESXi 7 中的虚拟机。

  • 我用来ssh连接到成功的系统和每个失败的系统。成功的系统提供了一个 GUI,但它是“以防万一”;目前sddm只坐在那里,我不以这种方式登录。

  • 的输出pstree -lu:

    @Successful $ pstree -lu
    systemd-+-ModemManager---2*[{ModemManager}]
            |-NetworkManager---2*[{NetworkManager}]
            |-accounts-daemon---2*[{accounts-daemon}]
            |-atop
            |-atopacctd
            |-avahi-daemon(avahi)---avahi-daemon
            |-blkmapd
            |-bluetoothd
            |-cron
            |-cups-browsed---2*[{cups-browsed}]
            |-cupsd
            |-dbus-daemon(messagebus)
            |-dhcpd
            |-exim4(Debian-exim)
            |-hostapd
            |-nfsdcld
            |-openvpn
            |-polkitd(polkitd)---2*[{polkitd}]
            |-rpc.idmapd
            |-rpc.mountd
            |-rpc.statd(statd)
            |-rpcbind(_rpc)
            |-rtkit-daemon(rtkit)---2*[{rtkit-daemon}]
            |-sddm-+-Xorg---10*[{Xorg}]
            |      |-sddm-helper---sddm-greeter(sddm)---11*[{sddm-greeter}]
            |      `-{sddm}
            |-smartd
            |-sshd-+-sshd---sshd(bisztynek)
            |      `-sshd---sshd(kamil)---bash---tmux: client
            |-systemd(sddm)-+-(sd-pam)
            |               |-dbus-daemon
            |               `-pulseaudio-+-gsettings-helpe---3*[{gsettings-helpe}]
            |                            `-2*[{pulseaudio}]
            |-systemd(kamil)-+-(sd-pam)
            |                |-dbus-daemon
            |                `-pulseaudio-+-gsettings-helpe---3*[{gsettings-helpe}]
            |                             `-{pulseaudio}
            |-systemd(bisztynek)-+-(sd-pam)
            |                    |-dbus-daemon
            |                    `-pulseaudio-+-gsettings-helpe---3*[{gsettings-helpe}]
            |                                 `-{pulseaudio}
            |-systemd-journal
            |-systemd-logind
            |-systemd-timesyn(systemd-timesync)---{systemd-timesyn}
            |-systemd-udevd
            |-tmux: server(kamil)---bash---pstree
            |-transmission-da(debian-transmission)---3*[{transmission-da}]
            |-udisksd---4*[{udisksd}]
            |-upowerd---2*[{upowerd}]
            `-wpa_supplicant
    
    @Failing1 $ pstree -lu
    systemd-+-VGAuthService
            |-agetty
            |-cron
            |-dbus-daemon(messagebus)
            |-dhclient
            |-nmbd
            |-rsyslogd---3*[{rsyslogd}]
            |-smbd-+-cleanupd
            |      |-smbd
            |      `-smbd-notifyd
            |-sshd---sshd---sshd(kamil)---bash---tmux: client
            |-systemd(kamil)---(sd-pam)
            |-systemd-journal
            |-systemd-logind
            |-systemd-timesyn(systemd-timesync)---{systemd-timesyn}
            |-systemd-udevd
            |-tmux: server(kamil)-+-2*[bash---nano]
            |                     `-bash---pstree
            `-vmtoolsd---2*[{vmtoolsd}]
    

    失败组中的其他系统可能运行稍微不同的任务集,但它们都类似地简约。


观察

成功的Debian 和失败的Debian之间的一大区别是 GUI。还有Xorg,sddm相关流程就成功了。但正如我所说,我根本不登录 GUI。不知道和这个问题有没有关系。也许这只是一条红鲱鱼。

debian
  • 1 个回答
  • 20 Views
Martin Hope
Kamil Maciorowski
Asked: 2023-12-13 08:09:11 +0800 CST

“文件系统预读”和“预读”有什么区别?

  • 6

从man 8 blockdev:

该实用程序blockdev允许从命令行调用块设备 ioctl。

我的问题是关于以下选项:

--getfra
获取 512 字节扇区中的文件系统预读。

--getra
打印预读(在 512 字节扇区中)。

--setfra sectors
设置文件系统预读(与--setra2.6 内核相同)。

--setra sectors
设置预读(在 512 字节扇区中)。

我想我知道预读是什么。让我困惑的是“文件系统预读”。

  1. 为什么有两个单独的选项:“文件系统预读”和“预读”?它们有何不同?

  2. “文件系统预读”与文件系统有什么关系吗?什么?如果是这样,那么让管理这件事有什么意义呢blockdev?

    我的意思blockdev是使用块设备(对吗?),块设备和文件系统是不同的抽象级别(对吗?),我们仍然重视“做一件事并做好它”(对吗?)。这就是为什么blockdev处理“文件系统之类的东西”让我感到惊讶。

linux
  • 1 个回答
  • 35 Views
Martin Hope
Kamil Maciorowski
Asked: 2022-06-08 01:26:03 +0800 CST

什么是`/dev/sda0`?这是标准的东西吗?

  • 20

在试图理解这个其他问题时,我遇到了/dev/sda0被提及。

我在 Linux 方面有一些经验,我习惯了这种方案,其中sda, sdb, ... 是设备,sda1, sda2, ... , sdb1, sdb2, ... 是分区(每个都在各自的设备内)。在这个方案sda0中,sdb0, ... 不出现。我不记得sda0见过。

仍然sda0出现在 U&L SE、Super User和其他地方。在它出现的地方,它几乎总是第一个分区,即我希望sda1在我习惯的方案中出现的分区。

另一方面,在 Debian 10 中,我可以看到for 、for等major,minor数字。因此,如果有人问我可能是什么,我会说哪个已经分配给. 这种推理将等同于整个设备。我猜这些数字是特定于 Linux 的,它们在非 Linux Unix(类)操作系统中可能不同,因此推理可能不适用于那里。8,1sda18,2sda2sda08,0sdasda0sda

在互联网上,我发现很少有sda0作为一个整体使用的设备。这些例子虽然很模糊,但可能是由于拼写错误或某些人的错误。

无论如何,问题是:是/曾经/dev/sda0是标准的东西吗?如果是这样,它是什么/曾经是什么?(可以/可以是一个完整的设备吗?)。在什么情况下是/是标准的事情?(例如,特定的操作系统、一些旧内核、特定的驱动程序、虚拟机内部、一些过时的(?)udev 配置等等)。

我希望得到的答案能给我足够的洞察力,所以下次我看到时/dev/sda0我就能对自己说:'哦,这家伙可能正在使用……';或者也许:'小心!自定义配置提前'。


旁注:我还发现/dev/hda0了从hda1. 我完全无法判断它是否与我观察到的密切相关(平行)/dev/sda*或只是巧合。

partition udev
  • 4 个回答
  • 3671 Views
Martin Hope
Kamil Maciorowski
Asked: 2018-09-06 15:36:32 +0800 CST

`/proc/self/environ` 在某些 shell 中的奇怪行为;到底是怎么回事?

  • 9

我在 Debian GNU/Linux 9 上。我知道/proc是特别的,我知道是什么/proc/self。

这个命令

sh -c '/bin/cat /proc/self/comm - </proc/self/comm'

产量

cat
sh

如果我使用dash而不是sh. 但是bash,ksh或者zsh结果是

cat
cat

取而代之/proc/self/stat的是,/proc/self/comm我可以确认这两个cat-s 实际上是同一个过程。显然外壳在引擎盖下有所不同,没关系。现在让我们采取

sh -c '/bin/cat /proc/self/environ - </proc/self/environ'

看了以上,sh还是dash期待先看看catshell的环境,再看看shell的环境。它似乎有效(两种环境很可能是相同的,所以很难判断一切是否按预期工作,但我的观点是:两者都不environ是空的)。

使用bash,ksh或者zsh我期望看到cat两次的环境,但它只打印了一次。分成两种不同的情况:

  • bash -c '/bin/cat - </proc/self/environ'什么也不打印,好像environ是空的;
  • bash -c '/bin/cat /proc/self/environ'按预期打印一些东西。

到底是怎么回事?这不是commor的情况stat。为什么不environ一样?

$ uname -a
Linux barbaz 4.9.0-6-amd64 #1 SMP Debian 4.9.88-1 (2018-04-29) x86_64 GNU/Linux
shell io-redirection
  • 1 个回答
  • 654 Views
Martin Hope
Kamil Maciorowski
Asked: 2018-04-11 21:21:18 +0800 CST

为什么`rm`声称我的符号链接是一个目录?[复制]

  • 0
这个问题在这里已经有了答案:
指向目录的符号链接上的斜杠 2 个答案
4年前关闭。

我创建了一个指向这样的目录的符号链接:

ln -s /some/directory symlink

现在我想删除符号链接:

rm symlink/

这行不通。错误信息是:

rm: cannot remove 'symlink/': Is a directory

我究竟做错了什么?为什么rm声称我的符号链接是一个目录?如何正确删除符号链接?

directory symlink
  • 1 个回答
  • 1018 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