小编Suz*_*Soy的帖子

如何让systemd服务开机启动

我在 XUbuntu 20.04 上安装了 Nix 包管理器。它添加了一项nix-daemon服务。我想nix-daemon在启动时启动该服务。如果我键入以下命令,该服务将运行并正常工作,直到我停止机器,但重新启动后该服务不会运行,我需要再次运行这些命令。

\n

systemd 似乎禁用了该服务或忘记了它已启用。我如何告诉 systemd 启用该服务并使其保持启用状态?

\n
$ sudo systemctl status nix-daemon\nUnit nix-daemon.service could not be found.\n
Run Code Online (Sandbox Code Playgroud)\n
$ sudo systemctl enable nix-daemon\n
Run Code Online (Sandbox Code Playgroud)\n
$ sudo systemctl status nix-daemon\n\xe2\x97\x8f nix-daemon.service - Nix Daemon\n     Loaded: loaded (/nix/store/4vz8sh9ngx34ivi0bw5hlycxdhvy5hvz-nix-2.3.7/lib/systemd/system/nix-daemon.service; enabled; vendor preset: enabled)\n    Drop-In: /etc/systemd/system/nix-daemon.service.d\n             \xe2\x94\x94\xe2\x94\x80override.conf\n     Active: inactive (dead)\nTriggeredBy: \xe2\x97\x8f nix-daemon.socket\n
Run Code Online (Sandbox Code Playgroud)\n
$ sudo service nix-daemon start\n\xe2\x97\x8f nix-daemon.service - Nix Daemon\n     Loaded: loaded (/nix/store/4vz8sh9ngx34ivi0bw5hlycxdhvy5hvz-nix-2.3.7/lib/systemd/system/nix-daemon.service; enabled; vendor preset: enabled)\n    Drop-In: /etc/systemd/system/nix-daemon.service.d\n             \xe2\x94\x94\xe2\x94\x80override.conf\n     Active: active (running) …
Run Code Online (Sandbox Code Playgroud)

systemd reboot nix

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

sudo askpass:从其他 tty 询问

语境

我想设置rsync我的服务器的备份,所以我运行以下命令

rsync -r -e ssh --rsync-path="sudo rsync" rsyncuser@example.com:/ /backup/
Run Code Online (Sandbox Code Playgroud)

理想情况下,该命令会询问我的私人 ssh 密钥密码,然后连接,然后询问 rsyncuser 的 sudo 密码,然后在服务器上运行 rsync。但我得到了臭名昭著的错误:

sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)

所以我不得不将它添加到/etc/sudoers(使用sudo visudo),这基本上为用户提供了对系统的无密码完全读写访问权限rsyncuser,这不合我的口味:

rsyncuser ALL= NOPASSWD:/usr/bin/rsync
Run Code Online (Sandbox Code Playgroud)

我该如何告诉 sudo 从另一个 TTY 读取其密码?

这样,我可以rsync在本地机器上的一个终端窗口中运行,并使用另一个终端窗口打开一个(可能是单独的)与服务器的 ssh 连接,并在那里提供 sudo 密码。

我想到做这样的事情的唯一方法是expect在 sudo 周围使用脚本,它从命名管道中读取密码,然后我会从另一个终端写入该管道。

注意:这更多是为了实验和学习,而不是为了任何实际目的,我不是想找出如何将 sudo 与 rsync 一起使用,我已经阅读了我能找到的所有相关内容。

sudo rsync tty expect

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

当 alt-shift 是快捷方式的一部分时,可切换键盘映射

我有两个 xkb 布局,并使用Alt+Shift在它们之间切换:

setxkbmap "fr,us" -option grp:alt_shift_toggle
Run Code Online (Sandbox Code Playgroud)

Alt但是,当我按下包含+的快捷方式时Shift,不会考虑该快捷方式,而是布局切换。例如Alt+ Shift+ Left(在某些编辑器中选择匹配右括号的代码),或Alt+ Shift+ %(在 emacs 中搜索和替换,法语键盘上%需要)。Shift

我认为 XUbuntu 14.04 并非如此,但我切换到 NixOs,现在遇到了这个问题。

如何配置,setxkbmap以便仅当Alt+Shift不是快捷方式的一部分时(即释放按键时且仅当没有同时按下另一个键时)才切换布局?

keyboard-shortcuts xkb keyboard-layout

5
推荐指数
1
解决办法
712
查看次数

GTK_IM_MODULE=xim 打破 GTK 和 QT 应用程序中的死键

我用来XIM让撰写键考虑我的~/.XCompose文件(这是唯一考虑它的输入方法,我尝试的所有其他输入方法都使用硬编码表)。然而,它打破了 GTK 和 QT 应用程序中的死键:如果在charmap(GTK) 中我按^ a,它只会打印a。不过,该^键已被识别,因为当我按下它时,它会使插入符号停止闪烁。在kate(QT)中,它^a改为打印(两个单独的字符)。

使用时如何使死键起作用XIM


以下是相关的环境变量:

$ env | grep '\(IM\|XMODIFIERS\)'
ECORE_IMF_MODULE=xim
QT_IM_MODULE=xim
GTK_IM_MODULE=xim
XMODIFIERS=@im=none
Run Code Online (Sandbox Code Playgroud)

xev这是按下时的输出^ a

KeyPress event, serial 37, synthetic NO, window 0x1a00001,
    root 0xd9, subw 0x0, time 29204065, (131,637), root:(135,656),
    state 0x10, keycode 34 (keysym 0xfe52, dead_circumflex), same_screen YES,
    XLookupString gives 1 bytes: (5e) "^"
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease …
Run Code Online (Sandbox Code Playgroud)

xkb dead-keys compose-key

5
推荐指数
0
解决办法
901
查看次数

进程替换和 cat:无法读取标准输入

进程替换<(cat)不起作用。为什么?

head <(cat) 
cat: -: Input/output error
Run Code Online (Sandbox Code Playgroud)

我可以使用额外的文件描述符,但我不明白为什么上述方法不起作用。

# Using file descriptor 3 to reroute the input
(head <(cat <&3)) 3<&0
Run Code Online (Sandbox Code Playgroud)

io-redirection process-substitution

4
推荐指数
1
解决办法
977
查看次数