小编Mic*_*ton的帖子

为什么我的 systemd 用户单元不在启动时启动?

我正在尝试创建一个 systemd 用户单元并让它在系统启动时启动。该服务会手动启动,但不会在启动时启动。

从网上搜索我了解到,为了让用户单元在启动时启动,我应该运行loginctl enable-linger <username>,但这似乎根本没有效果。事实上,手册页说:

       Enable/disable user lingering for one or more users. If enabled for
       a specific user, a user manager is spawned for the user at boot and
       kept around after logouts. This allows users who are not logged in
       to run long-running services.
Run Code Online (Sandbox Code Playgroud)

尽管运行此命令,但我的服务并未在启动时启动。

loginctl enable-linger error
Run Code Online (Sandbox Code Playgroud)

那个单位:

$ cat ~/.config/systemd/user/thin\@.service
[Unit]
Description=A fast and very simple Ruby web server

[Service]
Type=simple
EnvironmentFile=/home/error/.config/thin/%i
ExecStart=/usr/bin/bash /home/error/.rvm/wrappers/%i/thin start -a $THIN_BIND -p $THIN_PORT
WorkingDirectory=/srv/www/%i
PrivateTmp=true

[Install]
WantedBy=multi-user.target …
Run Code Online (Sandbox Code Playgroud)

fedora systemd not-root-user services

60
推荐指数
1
解决办法
2万
查看次数

Virtual Machine Manager 希望在 Wayland 上一次又一次地禁止快捷方式

我最近用 Fedora 27 重新安装了我的工作站,自从这样做以来,virt-manager 一直在做一件奇怪的事情。

每次打开 VM 控制台,然后将鼠标移入窗口时,都会出现一个对话框,询问我:

虚拟机管理器想禁止快捷方式

您可以通过按 Super+Escape 恢复快捷方式。

虚拟管理器截图

我是否单击拒绝或允许似乎并不重要。在任何一种情况下,诸如Ctrl+ 之W类的按键都由 virt-manager 处理,而不是发送到 VM。在这种情况下,例如,不是删除我正在编辑的行上的单词,而是关闭窗口。

在重新安装我的机器(也是在 Fedora 27 上)之前,我从未看到过这个对话框。

我记得对 virt-manager 所做的唯一更改是添加 PolicyKit 规则,以允许我的用户无需密码即可管理系统虚拟机:

# cat /etc/polkit-1/rules.d/51-org.libvirt.unix.manage.rules 
polkit.addRule(function(action, subject) {
        if (action.id == "org.libvirt.unix.manage" &&
            subject.user == "error") {
                return polkit.Result.YES;
                polkit.log("action=" + action);
                polkit.log("subject=" + subject);
        }
});
Run Code Online (Sandbox Code Playgroud)

这些是我现在拥有的软件包版本:

# rpm -q libvirt-daemon virt-manager
libvirt-daemon-3.7.0-3.fc27.x86_64
virt-manager-1.4.3-2.fc27.noarch
Run Code Online (Sandbox Code Playgroud)

另一个区别是现在我在 Wayland 上,而在我使用 X 之前。当我使用“Gnome on Xorg”登录时,问题就消失了。

如何防止这个无用的对话框出现在 Wayland 下,并将诸如Ctrl+ 之类的命令键W发送到 …

fedora wayland virt-manager

10
推荐指数
1
解决办法
3286
查看次数

[ vs [[ : 在 bash 脚本中使用哪一个?

zsh 手册页在test(aka [)部分明确建议不要使用它,并敦促读者[[尽可能使用它。

在相关章节中指出:

该命令尝试在指定的位置实现 POSIX 及其扩展。不幸的是,语法中存在内在的歧义;特别是测试运算符和类似它们的字符串之间没有区别。该标准试图解决这些问题的少量参数(最多四个);不能依赖五个或更多参数的兼容性。敦促用户尽可能使用[[没有这些歧义的“ ”测试语法。

我想我遇到过类似的 bash 建议,但是当我浏览 bash 手册页时,我找不到任何关于使用哪种表单([或[[)的“官方”建议。(也许我错过了?)

除了向后兼容“旧外壳”之外,还有什么理由可以[在 bash 脚本中使用吗?或者换种方式,确实庆典保持[连同[[其原因其他比向后兼容?

bash zsh shell-script control-flow test

8
推荐指数
2
解决办法
1920
查看次数

如何使用 '*' 捕获所有异常内容

例如,我有文件名为

A_1.txt A_t_1.txt A_ts_1.txt A_tsa_1.txt
Run Code Online (Sandbox Code Playgroud)

在一个目录中~/admin/packages/。

我正在通过通配到 A_1.txt 来构建 for 循环

for f in ~/admin/packages/*_1.txt
Run Code Online (Sandbox Code Playgroud)

很明显,这可能会指向这些文件中的任何一个。

具体来说,我想用一个“例外”命令(如果存在的话)说水珠任何文件,只要它不具有t,s,a之前_1.txt。

编辑:我忘了提到我将路径存储为变量。

PROJECT="~/admin/packages/*_1.txt"

for f in ${PROJECT}...
Run Code Online (Sandbox Code Playgroud)

bash wildcards

6
推荐指数
1
解决办法
550
查看次数