在处理日志文件时,由于某些原因,有些最终会成为 gzipped 文件,logrotate
而有些则不会。所以当你尝试这样的事情时:
$ zcat *
Run Code Online (Sandbox Code Playgroud)
你最终得到一个命令行zcat xyz.log xyz.log.1 xyz.log.2.gz xyz.log.3.gz
,然后是:
gzip: xyz.log: not in gzip format
Run Code Online (Sandbox Code Playgroud)
是否有一种工具可以使用魔术字节,类似于file
工作原理,并使用zcat
或cat
取决于结果,以便我可以将输出传输到grep
例如?
注意:我知道我可以编写脚本,但我想知道是否已经有工具了。
假设我有一个tmux
(1.7) 窗口拆分如下:
________________________
| 1 |
| |
|-----------+------------|
| 2 | 3 |
|___________|____________|
Run Code Online (Sandbox Code Playgroud)
现在,垂直尺寸已被自定义,因此它绝不是默认布局之一。
有时,当程序卡住或重新启动通过 连接的机器时ssh
,窗格会“挂起”。即除了kill-pane
似乎工作之外别无他物。
但是,因为一旦窗格 #1 被kill-pane
删除,就没有简单的方法来重建上面的拆分配置,所以我想“重新启动”它。
为了找出 Bash (v4+) 脚本中的某些操作需要多长时间,我想time
“单独”解析命令的输出,并(最终)在 Bash 变量 ( let VARNAME=...
) 中捕获它。
现在,我正在使用time -f '%e' ...
(或者更确切地说command time -f '%e' ...
是因为内置了 Bash),但是由于我已经重定向了执行命令的输出,我真的不知道我将如何捕获time
命令的输出。基本上这里的问题是到输出分离的time
从被执行的命令(或多个)的输出。
我想要的是计算启动命令和完成命令之间的时间(以秒为单位)的功能。它不必是time
命令或相应的内置命令。
编辑:鉴于以下两个有用的答案,我想添加两个说明。
date
到目前为止使用的解决方案接近我想要的。
我已阅读以下文章:如何绕过/忽略 apt 的 gpg 签名检查?
它概述了如何配置apt
不检查包的签名在所有。
但是,我想将此设置的影响限制为单个(在本例中为本地托管)存储库。
也就是说:除了本地 repo之外,所有官方存储库都应该像往常一样使用 GPG 签名检查。
我该怎么做?
如果做不到这一点,在自动构建(一些元包和一些程序)期间签署包然后执行所有安全apt
规定的优势(安全方面)是什么?毕竟,拥有 repo 的主机也将是秘密 GPG 密钥所在的主机。
是否可以使用 virt-manager 中的“Filesystem Passthrough”虚拟硬件选项与我的 Windows 来宾共享 Linux 主机上的文件夹?我找到了一些关于如何使用 Linux 客户机执行此操作的教程,但是当我使用 Windows 客户机尝试此操作时,我在尝试启动 VM 时收到以下错误消息:
Error starting domain: Unable to read from monitor: Connection reset by peer
Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/asyncjob.py", line 100, in cb_wrapper
callback(asyncjob, *args, **kwargs) File "/usr/share/virt-manager/virtManager/asyncjob.py", line 122, in tmpcb
callback(*args, **kwargs) File "/usr/share/virt-manager/virtManager/domain.py", line 1210, in startup
self._backend.create() File "/usr/lib64/python2.7/site-packages/libvirt.py", line 698, in create
if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: Unable to read from monitor: Connection reset by peer …
Run Code Online (Sandbox Code Playgroud) Ansible 变量来自各种来源。例如,可以通过在包含清单文件的文件夹中分别命名为host_vars
和的子文件夹中创建 YAML 文件来提供 host_vars 和 group_vars group_vars
。
如何列出所有的变量Ansible会知道一个剧本内的组或主机?注意:我尝试过ansible -m debug -e 'var=hostvars' host
,ansible -m debug -e '- debug: var=hostvars'
但无济于事。
提示:ansible <group|host> -m setup
是不是正确的答案,因为它并没有包括所有来自其他来源的变量(只包含{ "ansible_facts" : { ... } }
在事实上,它甚至不包括通过由动态库存脚本(提供变量。_meta
等)。
Ansible 版本:1.9.1。
升级到新发布版本后,我的bash
脚本开始出现错误:
bash: /dev/stderr: Permission denied
Run Code Online (Sandbox Code Playgroud)
在以前的版本中的Bash将在内部承认这些文件的名称(这就是为什么这个问题不是重复这一个),并做正确的事(TM) ,但是,这现在已经不再工作。我该怎么做才能再次成功运行我的脚本?
我曾尝试将运行脚本的用户添加到组中tty
,但这没有区别(即使在注销并重新登录后)。
我可以在命令行上毫无问题地重现这个:
$ echo test > /dev/stdout
bash: /dev/stdout: Permission denied
$ echo test > /dev/stderr
bash: /dev/stderr: Permission denied
$ ls -l /dev/stdout /dev/stderr
lrwxrwxrwx 1 root root 15 May 13 02:04 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 May 13 02:04 /dev/stdout -> /proc/self/fd/1
$ ls -lL /dev/stdout /dev/stderr
crw--w---- 1 username tty 136, 1 May 13 05:01 /dev/stderr
crw--w---- 1 …
Run Code Online (Sandbox Code Playgroud) 我有一个目录,我想在其中列出所有内容(文件和子目录)而不显示符号链接。我在 Linux 上使用 GNU 实用程序。该ls
版本是8.13。
例子:
完整目录列表:
~/test$ ls -Gg
total 12
drwxrwxr-x 2 4096 Jul 9 10:29 dir1
drwxrwxr-x 2 4096 Jul 9 10:29 dir2
drwxrwxr-x 2 4096 Jul 9 10:29 dir3
-rw-rw-r-- 1 0 Jul 9 10:29 file1
-rw-rw-r-- 1 0 Jul 9 10:29 file2
lrwxrwxrwx 1 5 Jul 9 10:29 link1 -> link1
lrwxrwxrwx 1 5 Jul 9 10:30 link2 -> link2
Run Code Online (Sandbox Code Playgroud)
我想得到什么
~/test$ ls -somthing (or bash hack)
total 12
dir1 dir2 dir3 file1 …
Run Code Online (Sandbox Code Playgroud) 自定义日期和时间格式设置的最佳实践是什么,同时坚持 DRY 原则,即没有不必要的重复内容?
我想为我的系统专门定制日期和时间格式,同时坚持其余的语言环境。我知道环境变量LC_TIME
将使仅通过指向备用语言环境来自定义该方面成为可能。由于我使用的是 Linux(确切地说是 Ubuntu 14.04),我想使用 理解的格式localedef
作为输入。
我已经阅读了以下三篇文档:
最后一个特别有帮助。
现在,我只是想自定义的部分LC_TIME
,并想继承verything人。
所以我复制en_US
到一个名为isodate
in的文件/usr/share/i18n/locales
并调整了我关心的值。在筛选文档后,我还决定用copy
-keyword替换所有其他部分内容。
问题:我不清楚哪种方法应该是最佳实践。有谁知道(或者甚至是我给出的其他替代方案)?
例如,由于我只关心几个值(d_t_fmt
, d_fmt
, t_fmt
, t_fmt_ampm
, am_pm
, date_fmt
),所以继承所有en_US
forLC_TIME
然后仅用我的类似 ISO 的格式(ISO 8601)覆盖这些值会很好。但是,有关copy
状态的文档(重点是我的):
复制
指定将用作此类别定义的现有语言环境的名称。如果指定了该关键字,则不得指定其他关键字。
这意味着我不能简单地输入 acopy
然后添加更多关键字。
另外,仅定义该LC_TIME
部分是否合法,还是会localedef
完全拒绝编译该部分?
到目前为止我想出了什么:
escape_char /
comment_char % …
Run Code Online (Sandbox Code Playgroud) bash ×2
ansible ×1
apt ×1
cat ×1
date ×1
file-sharing ×1
gzip ×1
kvm ×1
linux ×1
locale ×1
ls ×1
lxc ×1
permissions ×1
recursive ×1
repository ×1
shell-script ×1
stdout ×1
symlink ×1
time ×1
tmux ×1
userns ×1
virt-manager ×1