小编dot*_*hen的帖子

查找并删除打开但已被删除的大文件

如何找到已被删除但仍在应用程序中打开的大文件?即使进程打开了这样的文件,如何删除它?

情况是我们正在运行一个正在以极快的速度填充日志文件的进程。我知道原因,我可以解决它。在那之前,我想在不关闭进程的情况下 rm 或清空日志文件。

简单地执行rm output.log仅删除对文件的引用,但它会继续占用磁盘空间,直到进程终止。更糟糕的是:在rming之后我现在无法找到文件在哪里或有多大!有没有办法找到该文件,并可能清空它,即使它仍然在另一个进程中打开?

我特指基于 Linux 的操作系统,例如 Debian 或 RHEL。

process logs disk-usage open-files files

142
推荐指数
2
解决办法
29万
查看次数

如何grep cURL的输出?

我需要检索 SSL 证书的到期日期。该curl应用程序确实提供了以下信息:

$ curl -v https://google.com/
* Hostname was NOT found in DNS cache
*   Trying 212.179.180.121...
* Connected to google.com (212.179.180.121) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key …
Run Code Online (Sandbox Code Playgroud)

command-line bash curl

92
推荐指数
2
解决办法
20万
查看次数

如何grep特定行_和_文件的第一行?

假设一个简单的grep,例如:

$ psa aux | grep someApp
1000     11634 51.2  0.1  32824  9112 pts/1    SN+  13:24   7:49 someApp
Run Code Online (Sandbox Code Playgroud)

这提供了很多信息,但由于缺少 ps 命令的第一行,因此没有信息的上下文。我更希望显示 ps 的第一行:

$ psa aux | someMagic someApp
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
1000     11634 51.2  0.1  32824  9112 pts/1    SN+  13:24   7:49 someApp
Run Code Online (Sandbox Code Playgroud)

当然,我可以为 ps 专门为 grep 添加一个正则表达式:

$ ps aux | grep -E "COMMAND|someApp"
Run Code Online (Sandbox Code Playgroud)

但是,我更喜欢更通用的解决方案,因为在其他情况下我也希望拥有第一行。

似乎这将是“stdmeta”文件描述符的一个很好的用例。

command-line bash

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

SSH 和 SCP 的自动完成服务器名称

我配置了一些服务器~/.ssh/config,例如alphabeta。我如何配置 Bash 以便命令和自动完成已配置服务器的名称?$ ssh alTab$ scp file.tgz alTab

我不想每次添加服务器时都将服务器添加到另一个文件(即 Bash 数组),因为我们定期添加和删除服务器并且列表非常大。

这是在 Kubuntu 12.10 上,我确实安装了bash-completion

bash ssh scp autocomplete

77
推荐指数
5
解决办法
7万
查看次数

将 grep 上下文限制为在线 N 个字符

我必须对一些行长度超过几千个字符的 JSON 文件进行 grep。如何限制 grep 在匹配的左侧和右侧显示最多 N 个字符的上下文?除了 grep 之外的任何工具都可以,只要它在常见的 Linux 包中可用。

这将是示例输出,对于虚构的 grep 开关?

$ grep -r foo *
hello.txt: Once upon a time a big foo came out of the woods.

$ grep -? 10 -r foo *
hello.txt: ime a big foo came of t
Run Code Online (Sandbox Code Playgroud)

grep search json

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

如何检查哪些 SSH 密钥当前处于“活动状态”?

如何检查哪些 .rsa、.pem 和其他文件被“加载”或“活动” ssh-add?我只是有这样的恐惧:

$ scp -i /home/dotancohen/.ssh/dotancohen.pem someUser@1.2.3.4:~/files.tgz .
Warning: Identity file /home/dotancohen/.ssh/dotancohen.pem not accessible: No such file or directory.
files.tgz                                                                100%   89MB   1.5MB/s   00:59
$ scp someUser@1.2.3.4:~/all_git.tgz . 
files.tgz                                                                100%   89MB   1.7MB/s   00:54
Run Code Online (Sandbox Code Playgroud)

在验证服务器确实需要.pem密钥后,我现在想知道在我不知道的情况下加载了哪些其他密钥!

security ssh

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

为什么这个通过“ssh -t”传输的二进制文件被改变了?

我正在尝试通过 SSH 复制文件,但scp由于不知道我需要的确切文件名而无法使用。尽管小二进制文件和文本文件传输良好,但大二进制文件会被更改。这是服务器上的文件:

remote$ ls -la
-rw-rw-r--  1 user user 244970907 Aug 24 11:11 foo.gz
remote$ md5sum foo.gz 
9b5a44dad9d129bab52cbc6d806e7fda foo.gz
Run Code Online (Sandbox Code Playgroud)

这是我移动后的文件:

local$ time ssh me@server.com -t 'cat /path/to/foo.gz' > latest.gz

real    1m52.098s
user    0m2.608s
sys     0m4.370s
local$ md5sum latest.gz
76fae9d6a4711bad1560092b539d034b  latest.gz

local$ ls -la
-rw-rw-r--  1 dotancohen dotancohen 245849912 Aug 24 18:26 latest.gz
Run Code Online (Sandbox Code Playgroud)

请注意,下载的文件比服务器上的文件!但是,如果我对一个非常小的文件做同样的事情,那么一切都会按预期进行:

remote$ echo "Hello" | gzip -c > hello.txt.gz
remote$ md5sum hello.txt.gz
08bf5080733d46a47d339520176b9211  hello.txt.gz

local$ time ssh me@server.com -t 'cat /path/to/hello.txt.gz' …
Run Code Online (Sandbox Code Playgroud)

ssh file-copy

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

查找权限不是 775 / 664 的目录和文件

我正在将网站从一台服务器移动到另一台服务器,Git 不存储元数据,例如文件权限。我需要分别找到不是 775 / 664 的目录和文件。

现在,我正在使用这个拼凑在一起的装置:

$ find . -type d -exec ls -la {} \; | grep ^d | grep -v ^drwxrwxr-x
$ find . -type f -exec ls -la {} \; | grep -v ^d | grep -v ^-rw-rw-r-- | grep -v '.git'
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但我觉得它相当hacky。有没有更好的方法来做到这一点,也许是一种规范的方式,或者我应该只是hacky?

这是在 Bash 下带有 GNU 工具的最新 Ubuntu 版本上运行的。

permissions find

29
推荐指数
2
解决办法
5万
查看次数

术语协调:显示管理器与会话管理器、窗口系统与窗口管理器

我正在学习 Linux 基金会的Linux 入门课程。某些术语似乎重叠或矛盾,尤其是当我尝试用其他来源(例如TLDPWikipedia )补充课程材料时。

“显示管理器”与“会话管理器”是否相同?

显示管理器:通过启动窗口系统并通常要求输入用户名和密码来启动窗口系统会话的程序。

?

会话管理器:启动和维护图形会话的组件。

同样,“窗口系统”与“窗口管理器”是否相同?

窗口系统:为高级软件提供 GUI 关键元素的软件。为应用程序提供(通常)矩形、可调整大小的表面,以向用户展示其 GUI。

?

窗口管理器:控制窗口、窗口镶边和控件的放置和移动。

只是为了确定 X:从我收集的信息来看,“X Window System”似乎是位图显示的窗口系统,“X11”是 X Window System 的当前协议版本,“X.Org Server”是X11协议的参考实现。那是对的吗?

window-manager x11 terminology display-manager

26
推荐指数
4
解决办法
4984
查看次数

ps 如何知道隐藏密码?

证人:

$ ps f
  PID TTY      STAT   TIME COMMAND
31509 pts/3    Ss     0:01 -bash
27266 pts/3    S+     0:00  \_ mysql -uroot -p
25210 pts/10   Ss+    0:00 /bin/bash
24444 pts/4    Ss     0:00 -bash
29111 pts/4    S+     0:00  \_ tmux attach
 4833 pts/5    Ss+    0:00 -bash
 9046 pts/6    Ss     0:00 -bash
17749 pts/6    R+     0:00  \_ ps f
 4748 pts/0    Ss     0:00 -bash
14635 pts/0    T      0:02  \_ mysql -uroot -px xxxxxxxxxxxxxxxx
16210 pts/0    S+     0:01  \_ mysql -uroot -px xxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)

ps …

security ps arguments

23
推荐指数
2
解决办法
1万
查看次数