我在 XUbuntu 20.04 上安装了 Nix 包管理器。它添加了一项nix-daemon
服务。我想nix-daemon
在启动时启动该服务。如果我键入以下命令,该服务将运行并正常工作,直到我停止机器,但重新启动后该服务不会运行,我需要再次运行这些命令。
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) 我想设置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 一起使用,我已经阅读了我能找到的所有相关内容。
我有两个 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不是快捷方式的一部分时(即释放按键时且仅当没有同时按下另一个键时)才切换布局?
我用来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) 进程替换<(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)