小编Tob*_*bia的帖子

如何正确覆盖 logrotate 策略?

各种 Debian 软件包,包括logrotatersyslog,将它们自己的日志轮换定义放在/etc/logrotate.d/

覆盖这些定义的正确方法是什么?

如果我修改文件,我会在每次系统更新时收到警告,如果我(或其他人)给出错误答案,我可能会丢失更改;否则,如果我(或其他人)无法手动合并文件,则可能无法获得新日志文件的新上游定义。这两件事在过去几年中经常发生。

我尝试覆盖00_*zz_*文件中的定义,但出现重复错误:

error: zz_mail:1 duplicate log entry for /var/log/mail.log
error: found error in /var/log/mail.log , skipping
Run Code Online (Sandbox Code Playgroud)

有没有干净的解决方案?我应该每天编写一个 cron 脚本来重新应用我对定义文件的更改吗?


编辑:为了更清楚,理想情况下我希望保留 99%rsyslog的日志轮换定义,并使用 APT 自动更新。除了 的单个定义之外,/var/log/mail.log我需要对其应用不同的轮换策略。

如果 Logrotate 允许重复定义,并且每个文件只使用第一个或最后一个,我的问题就解决了。如果它有一个override选项,将一个定义标记为故意覆盖前一个定义,那也可以解决它。

但是,唉,看来我需要用我自己的版本覆盖整个/etc/logrotate.d/rsyslog(和nginx,以及其他)。

logrotate debian configuration

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

全局 /opt 目录的用户等效项是什么?

我想知道是否有人同意用户等效于全局/opt目录,以便将作为 tarball 分发的第三方包解压为单个目录。示例包括 Firefox Beta、Tor 浏览器以及无数其他浏览器。

过去,我把它们放在任何我打开包装的地方,无论是在我的家里,在~/Downloads,还是在其他随机的地方,但现在我想把这些乱七八糟的东西整理一下。

我在想要么~/.local/opt要么~/.opt,但我想知道是否有任何我忽略的标准地方。

fhs home xdg xdg-user-dirs

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

当被 AWK 调用并被 ^C 中断时,使 bash exit != 0

我在使用以下 (G)AWK 脚本时遇到问题:

do {
    ...
} while (system("sleep 10"))
Run Code Online (Sandbox Code Playgroud)

我的目的是在用户在睡眠期间按 ^C 时打破循环,但它不起作用。

我相信问题在于当被 ^C 中断时,Bash 以 0 退出,至少当它被 AWK 执行时system()

$ awk 'BEGIN { print "\n" system("sleep 2") }'
(let the sleep complete)
0
Run Code Online (Sandbox Code Playgroud)

 

$ awk 'BEGIN { print "\n" system("sleep 2") }'
^C
0
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

这是 Bash 或 (G)AWK 中的错误吗?

是否有一个不涉及复杂的 Bash 特定语法的简单解决方案,例如trap

我能想到的最好的方法是:

do {
    ...
} while (42 == system("sleep 10 && exit 42"))
Run Code Online (Sandbox Code Playgroud)

对我来说,这仍然是一个杂七杂八的东西。

bash signals awk gawk

7
推荐指数
1
解决办法
358
查看次数

Fish 相当于 Bash / readline 的 Ctrl-O “操作并获取下一个”

Readline 和 Bash 有一个非常有用的命令,称为operate-and-get-next,默认绑定到 Ctrl-O,该命令在从历史记录中选择当前行后执行当前行,并将历史记录指针前进一位,而不是清除命令行提示符,如 Enter会做。

因此,如果您希望以相同的顺序一一重复执行最近执行的多个连续命令,您可以:

  1. 从历史记录中调用序列中的第一个命令
  2. 使用 Ctrl-O 执行它
  3. 检查输出
  4. 检查命令行现在是否指向序列中的下一个命令
  5. 转到 2。

Fish有没有类似的东西,或者可以将其实现为一个函数吗?

command-history fish readline

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