小编max*_*zig的帖子

如何对日志轮换文件执行`tail -f`?

在长时间运行的系统上,我通常有一个终端

$ tail -f /var/log/kern.log
Run Code Online (Sandbox Code Playgroud)

或类似的东西打开。

但有时我必须重新启动此类命令,因为不再显示新消息。

我认为这是因为替换日志文件的日志轮换作业tail -f正在“观察”。

如何避免这种重启问题?

我可以调用tail这样它注意到旋转过程并做正确的事情吗?

(我在rsyslogd默认使用的 Ubuntu 11.04 系统上注意到了这个问题。)

logs logrotate rsyslog tail

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

如何在 CentOS 7 下显示以前启动的日志消息?

journalctl在 CentOS 7 系统下执行只会打印上次启动后生成的消息。

命令

# journalctl --boot=-1
Run Code Online (Sandbox Code Playgroud)

印刷

Failed to look up boot -1: Cannot assign requested address
Run Code Online (Sandbox Code Playgroud)

并以状态 1 退出。

将它与当前的 Fedora 系统进行比较,我注意到 CentOS 7 没有/var/log/journaljournalctl也没有提供--list-boots)。

因此,我的问题是如何显示在上次启动日期之前写入的日志消息。

或者,也许这个功能必须在 CentOS 7 上启用?

journalctl手册页将“systemd 208”列为版本号。)

centos systemd systemd-journald

108
推荐指数
2
解决办法
16万
查看次数

实时监控网络接口上的 HTTP 请求?

出于调试目的,我想监视网络接口上的 http 请求。

使用幼稚的tcpdump命令行,我得到了太多底层信息,而我需要的信息却没有很清楚地表示出来。

将流量转储tcpdump到文件然后使用wireshark的缺点是它不是即时的。

我想像这样的工具用法:

$ monitorhttp -ieth0 --only-get --just-urls
2011-01-23 20:00:01 GET http://foo.example.org/blah.js
2011-01-23 20:03:01 GET http://foo.example.org/bar.html
...
Run Code Online (Sandbox Code Playgroud)

我正在使用 Linux。

networking monitoring http-logging

102
推荐指数
3
解决办法
16万
查看次数

正确锁定 shell 脚本?

有时您必须确保同一时间只有一个 shell 脚本实例正在运行。

例如,通过 crond 执行的 cron 作业本身不提供锁定(例如默认的 Solaris crond)。

实现锁定的常见模式是这样的代码:

#!/bin/sh
LOCK=/var/tmp/mylock
if [ -f $LOCK ]; then            # 'test' -> race begin
  echo Job is already running\!
  exit 6
fi
touch $LOCK                      # 'set'  -> race end
# do some work
rm $LOCK
Run Code Online (Sandbox Code Playgroud)

当然,这样的代码有竞争条件。有一个时间窗口,其中两个实例的执行都可以在第 3 行之后才能访问$LOCK文件。

对于 cron 作业,这通常不是问题,因为两次调用之间有几分钟的间隔。

但是事情可能会出错——例如,当锁定文件在 NFS 服务器上时——挂起。在这种情况下,多个 cron 作业可以在第 3 行阻塞并排队。如果NFS服务器再次处于活动状态,那么你已经惊群并行运行的作业。

在网上搜索我发现工具lockrun似乎是该问题的一个很好的解决方案。使用它,您可以运行一个需要像这样锁定的脚本:

$ lockrun --lockfile=/var/tmp/mylock myscript.sh
Run Code Online (Sandbox Code Playgroud)

您可以将其放在包装器中或从您的 crontab 中使用它。

lockf()如果可用,它使用(POSIX) 并回退到flock()(BSD)。并且lockf()对 NFS …

cron nfs shell-script coreutils lock

71
推荐指数
6
解决办法
6万
查看次数

密钥详细信息列表中如何定义 GPG 使用标志?

当我列出一个键的详细信息时,我会得到如下输出:

$ gpg --edit-key SOMEID
pub [..] created: [..] expires: [..]   usage:SC
[..]
sub [..] created: [..] expires: [..]   usage: E
Run Code Online (Sandbox Code Playgroud)

甚至usage: SCA在另一个键上(主键部分)。

用法字段中的这些缩写是什么意思?

我可以得出:

S -> for signing
E -> for encrypting
Run Code Online (Sandbox Code Playgroud)

但是CA呢?

还有更多吗?

在哪里可以找到这样的东西?

gpg

70
推荐指数
5
解决办法
3万
查看次数

如何在 USB 设备插件上运行自定义脚本?

在当前的 Linux 发行版(如 Debian/CentOS/Fedora)下,在 USB 设备插件上自动执行自定义脚本的最先进方法是什么?

例如,如果您想根据 UUID(或设备 ID 等)自动挂载/复制某些文件/卸载 USB 大容量存储设备。

usb udev uuid

47
推荐指数
2
解决办法
10万
查看次数

如何删除 Fedora 中的孤立包?

我刚刚从 Ubuntu 切换到 Fedora14。在 Ubuntu 中,我们apt-get autoremove可以删除孤立/未使用的包。Fedora 中的对应物是什么?

yum fedora dnf

44
推荐指数
4
解决办法
9万
查看次数

如何从命令行查询pdf页面大小?

对于脚本,我需要获取 PDF 文件的页面尺寸(以毫米为单位)。

pdfinfo 只需将其打印在“pts”中,例如:

Page size:      624 x 312 pts
Run Code Online (Sandbox Code Playgroud)

我应该使用什么?

或者无论如何单位是'pts' - 如果我想转换它们......

pdf

43
推荐指数
3
解决办法
3万
查看次数

将整个分区或硬盘克隆到一个稀疏文件

我喜欢将整个分区或整个硬盘驱动器克隆到更大的外部磁盘上,但喜欢创建一个稀疏文件。我经常dd用于克隆,但它不支持稀疏文件。作为一种解决方法,我使用了类似的东西:

cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw
Run Code Online (Sandbox Code Playgroud)

但是,这对我的口味来说有点太棘手,并且如果中止,我将无法恢复该过程。有趣的是,有一个用于此 ( ntfsclone)的 NTFS 工具,但不存在用于 Linux (EXT2-4) 的本机文件系统的此类工具。

是否有一些更好的工具,例如dd具有稀疏支持的变体?我不寻找一些用于磁盘备份的专有软件,而只是想制作一个稀疏克隆副本,如果需要,我可以将其安装为循环设备。

dd cloning sparse-files

38
推荐指数
2
解决办法
3万
查看次数

仅转储 POST 请求的通用 HTTP 服务器?

我正在寻找一个命令行工具来侦听给定的部分,很高兴地排除每个 HTTP POST 请求并将其转储。

我想将它用于测试目的,即用于测试发出 HTTP POST 请求的客户端。

这意味着我正在搜索对应物curl -F(我可以使用它来将测试 HTTP POST 发送到 HTTP 服务器)。

也许类似socat TCP4-LISTEN:80,fork,bind=127.0.0.1 ...- 但 socat 是不够的,因为它不谈 HTTP。

http-logging http

32
推荐指数
4
解决办法
2万
查看次数