我有一个特定的 systemd 服务,我不希望将其日志记录到journald/journalctl。目前的原因是它已经记录到 syslog(已经轮换),并且journald/journalctl 日志被该服务的日志淹没(磁盘空间问题)。
现在我已经更改了journald/journalctl的配置Storage=volatile
,这样它就不会写入磁盘太多。我知道我可以更改SystemMaxUse
和SystemKeepFree
in /etc/systemd/journald.conf
,但这并不理想,因为来自其他服务的日志将被该特定服务覆盖。我想继续使用journald/journalctl,但只是不用于该特定服务。
我可以在服务单元文件中更改任何配置,/etc/systemd/system/myservice.service
以便它不会记录到journald/journalctl 中吗?
我正在制作一个具有 setuid 权限的 Bash 脚本,但它不起作用。所以我在这里找到了我的解决方案:
现在我的脚本一切正常(我用 cpp 重写了它)。
为了满足我对为什么纯 Bash shell 不起作用的好奇心,我阅读了这个链接:http : //www.faqs.org/faqs/unix-faq/faq/part4/section-7.html(参考这个答案:https : //unix.stackexchange.com/a/2910)。在那个网站上,我遇到了以下内容:
$ echo \#\!\/bin\/sh > /etc/setuid_script
$ chmod 4755 /etc/setuid_script
$ cd /tmp
$ ln /etc/setuid_script -i
$ PATH=.
$ -i
Run Code Online (Sandbox Code Playgroud)
我不明白第四行,它是ln /etc/setuid_script -i
.
这个命令有什么作用?
我在ln
手册中读到的-i
只是“交互式”标志(询问您是否要覆盖现有文件)。那么为什么ln /etc/setuid_script -i
遵循PATH=.
并-i
让我的 shell 执行/bin/sh -i
呢?
当我跑步时egrep
,它显示warning: egrep is obsolescent; using grep -E
但我将它用作我经常使用的 shell 自动完成脚本的一部分,并且我不想重写它们。
我正在寻找抑制这些警告的方法,因为我的自动完成变得“丑陋”,例如:在输入时mycmd myargum<TAB>
,我期望自动完成能够做到这一点mycmd myargument
,但它却写道:
mycmd myargum<TAB>grep: warning: egrep is obsolescent; using grep -E
grep: warning: egrep is obsolescent; using grep -E
ent
Run Code Online (Sandbox Code Playgroud)
目前我尝试这样做:
mv /usr/bin/egrep /usr/bin/egrep.backup
echo 'grep -E $@' > /usr/bin/egrep
chmod a+x /usr/bin/egrep
Run Code Online (Sandbox Code Playgroud)
它的工作原理是将 grep 二进制文件更改为调用“grep -E”的脚本。
附加信息:
$ egrep.backup --version
egrep.backup: warning: egrep.backup is obsolescent; using grep -E
grep (GNU grep) 3.8
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: …
Run Code Online (Sandbox Code Playgroud)