我发现很难准确地表达这个问题,但我会尽力而为。我dwm
用作我的默认窗口管理器和dmenu
作为我的应用程序启动器。除了浏览器,我几乎不使用 GUI 应用程序。我的大部分工作都是直接从命令行完成的。此外,我非常喜欢操作系统、应用程序等方面的极简主义。我从未摆脱过的工具之一是应用程序启动器。主要是因为我对应用程序启动器的工作方式/它们的作用缺乏准确的了解。即使是广泛的互联网搜索也只能得到模糊的解释。我想要做的是摆脱我的应用程序启动器,因为除了实际生成应用程序之外,我完全没有用它。为了做到这一点,我真的很想知道如何从外壳“正确”启动应用程序。因此,“正确地”的含义可以近似为“就像应用程序启动器会做的那样”。
我知道以下从 shell 生成进程的方法:
exec /path/to/Program
用指定的命令替换 shell 而不创建新进程sh -c /path/to/Program
启动 shell 依赖进程/path/to/Program
启动 shell 依赖进程/path/to/Program 2>&1 &
启动外壳独立进程nohup /path/to/Program &
启动独立于 shell 的进程并将输出重定向到 nohup.out
更新 1:我可以说明例如在不同条件下dmenu
从重复调用中重建它的内容ps -efl
。它生成一个新的 shell/bin/bash
并且作为这个 shell 的子应用程序/path/to/Program
。只要孩子在身边,贝壳就会在身边。(它如何管理这超出了我的能力......)相反,如果你nohup /path/to/Program &
从一个 shell发出,/bin/bash
那么程序将成为这个 shell 的子进程,但是如果你退出这个 shell,程序的父进程将是最上层的进程。因此,如果第一个进程是 eg/sbin/init verbose
并且它有,PPID 1
那么它将是程序的父进程。这里就是我试图用一个图表来解释:chromium
推出通过dmenu
,firefox
使用推出exec firefox & exit
:
systemd-+-acpid
|-bash---chromium-+-chrome-sandbox---chromium-+-chrome-sandbox---nacl_helper …
Run Code Online (Sandbox Code Playgroud) 我lxc
在Arch Linux
. 以下是基本系统信息:
[chb@conventiont ~]$ uname -a
Linux conventiont 3.17.4-Chb #1 SMP PREEMPT Fri Nov 28 12:39:54 UTC 2014 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
这是一个自定义/编译内核,具有user namespace enabled
:
[chb@conventiont ~]$ lxc-checkconfig
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled
--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: …
Run Code Online (Sandbox Code Playgroud) 如何用 sed 替换字符串中的所有内容,除了 % 和直接接在它之后的任何数字?意思是,除字符串外的所有内容,例如:
%1
%1000
%55
等等。
给定这种形式的字符串:
1: [18x14] [history 1/2000, 268 bytes] %3
2: [18x14] [history 1/2000, 268 bytes] %4 (active)
Run Code Online (Sandbox Code Playgroud)
我只想得到%3
和%4
零件。数字可以达到999
。
我有一个*.pdf
受密码保护的文件。我有密码,我可以用 .pdf 查看 pdf mupdf
。但是,使用CUPS
via打印lpr -P PRINTERNAME *.pdf
不起作用。我所有的打印都是通过命令行和 cupslpr
命令完成的,我不想改变它。有没有办法CUPS
打印受密码保护的pdf?
我的 GnuPG 密钥环中有多个用户的一些公钥。其中一个用户已切换到新的公钥。我仍然拥有用户的旧密钥,该密钥的分配信任为ultimate
. 我刚刚为他的新密钥分配了相同的信任。
他不再使用旧钥匙了。旧钥匙该怎么办?我应该撤回信任,还是撤销信任?在这种情况下,正确的程序是什么?
当我查看lsblk
它的输出时,通常会显示:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 298.1G 0 disk
??sda1 8:1 0 1023M 0 part /boot
??sda2 8:2 0 297.1G 0 part /
sr0 11:0 1 1024M 0 rom
Run Code Online (Sandbox Code Playgroud)
与/
是我的根文件系统的挂载点。但是,如果我开始,sudo systemctl start docker
我会得到以下输出:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 298.1G 0 disk
??sda1 8:1 0 1023M 0 part /boot
??sda2 8:2 0 297.1G 0 part /var/lib/docker/btrfs
sr0 11:0 1 1024M 0 rom
Run Code Online (Sandbox Code Playgroud)
现在我的根文件系统的挂载点已根据 …
我正在编写一个 bash 脚本,dwm
使用xsetroot
. 一切都按预期工作。我目前缺少的是一种简单的方法,它只使用标准*nix
工具为我提供系统上每个内核的当前负载(我有 4 个内核。)。我不知道如何做到这一点,例如使用top
. 到目前为止,我在本网站上找到的所有其他帖子都只涉及平均负载。以前有人这样做过吗?
我希望每个内核都使用它的主要原因是有一个廉价而粗略的工具来检查程序是否正在运行我并行编写的某些代码(例如每个循环)。
我尝试绑定Shift-Enter
以插入换行符而不评估终端和 repl 模式中的当前表达式。通过阅读ArchWiki,我想在我的设置这个~/.Xmodmap
文件并重新装载~/.Xmodmap
有xmodmap ~/.Xmodmap
。然而,这不起作用。这是我的详细设置:
内容:
~/.Xmodmap:
keysym Return = Return Linefeed
Run Code Online (Sandbox Code Playgroud)
~/.Xmodmap
通过设置登录时自动获取资源:
if [ -s ~/.Xmodmap ]; then
xmodmap ~/.Xmodmap
fi
Run Code Online (Sandbox Code Playgroud)
在我的~/.xinitrc
.
其他相关信息:
(1) 我在我~/.bashrc
和我的~/.inputrc
. 然而,当去掉这些选项时,结果并没有什么不同。
(2)这里keysym Return = Return Linefeed
建议使用。* 其他方法也不起作用。
(3) 我$TERM
的设置为xterm-256color
。
谢谢你的帮助!
*更新:此页面上建议的解决方案(如果仍未找到)无法在此处讨论的特定情况下工作,因为编程语言正在使用其自己的 repl 实现。所以这与手头的案件没有任何关系。
我使用 lxc 在 archlinux 主机上成功创建了一个 archlinux 容器。但是,每当我通过以下方式启动容器时
lxc-start -n GUESTNAME
Run Code Online (Sandbox Code Playgroud)
键盘布局更改为主机和容器中的默认 us-layout。但我希望它是 de-latin1。令人惊讶的是,尽管事实上在
/etc/vconsole.conf
Run Code Online (Sandbox Code Playgroud)
在主机和容器中我已经设置了选项
KEYMAP=de-latin1
Run Code Online (Sandbox Code Playgroud)
这个问题的原因似乎是负责设置 vconsole 选项的 systemd 服务没有在容器内运行:
systemctl status systemd-vconsole-setup
? systemd-vconsole-setup.service - Setup Virtual Console
Loaded: loaded (/usr/lib/systemd/system/systemd-vconsole-setup.service; static)
Active: inactive (dead)
start condition failed at Mon 2014-06-02 20:53:10 UTC; 27s ago
ConditionPathExists=/dev/tty0 was not met
Docs: man:systemd-vconsole-setup.service(8)
man:vconsole.conf(5)
Run Code Online (Sandbox Code Playgroud)
不知何故,它指出
/dev/tty0 was not met
Run Code Online (Sandbox Code Playgroud)
但我不确定它想告诉我什么。archlinux linux 容器页面(https://wiki.archlinux.org/index.php/Linux_Containers#Terminal_settings)对我没有帮助。有人可以解释错误以及如何解决吗?
更新:
(1) 当我直接从控制台启动容器时,键盘布局不会改变(例如,通过启动 tmuxtmux new -s stoic
然后运行sudo lxc-start -n stoic
,然后通过 与 tmux …
我在用着gnupg 2.1.2
。gnupg
通常在缓存我的密码时它非常方便。但对于一些敏感程序,我希望gnupg
不使用gpg-agent
. 我在互联网上搜索了很长时间,但没有找到很多有用的信息。如何知道我gnupg
不希望缓存特定程序的密码?
这是一个例子。我使用Mutt
作为我的 MUA,并将所有帐户的密码加密在~/.mutt/.passwd.gpg
. 在我的~/.muttrc
我设置
source "/usr/bin/gpg -d --quiet ~/.mutt/.passwd.gpg |"
Run Code Online (Sandbox Code Playgroud)
当我Mutt
第一次启动时,我会被要求输入我的私钥密码gpg
。当我输入该密码后,该密码将被缓存一段时间gpg
。因此,当我Mutt
在此间隔内再次开始时,系统不会再提示我输入私钥密码。这意味着在此期间访问我的计算机的任何人都可以阅读我的邮件甚至发送邮件。我如何知道gpg
(例如,通过传递一个选项,gpg
尽管-page 不显示任何相关标志)在每次启动(或任何其他特定程序)man
时提示输入我的私钥密码?Mutt
我意识到这甚至可能不可能,因为gpg
可能不知道哪个程序试图访问加密文件。但我希望我们伟大的社区能够证实这一点。