小编Jos*_* R.的帖子

有没有办法在一个目录(Linux/Unix)中压缩多个文件?

是否有一种相当简单的方法来处理tar目录中的多个(特定)文件?例如,假设以下是一个目录:

-rw-r--r-- 1 allend bin     98 Jul 20 15:50 scriptlog.log
-rw-r--r-- 1 allend bin  19533 Jul 29 21:47 serveralert.log
-rwxr--r-- 1 allend bin   1625 Jul 29 21:47 orion
-rw-r--r-- 1 allend bin  24064 Jul 29 21:49 orion_files.tar
-rwxr--r-- 1 allend bin    156 Aug  4 21:22 htmltest
-rw-r--r-- 1 allend bin    131 Aug  4 21:23 page.html
Run Code Online (Sandbox Code Playgroud)

如果我只想要tar文件serveralert.logpage.html?

tar files

35
推荐指数
1
解决办法
10万
查看次数

SSH 用户登录时如何防止关机?

我正在管理一个网络环境,昨天我遇到了一个有趣的情况。当普通用户要求主机关闭时,如果其他用户在本地登录,则主机拒绝这样做。但是,当其他用户通过 SSH 登录时,情况并非如此。如果一个用户在本地登录并且一个用户通过 SSH 登录,并且本地登录的用户尝试关闭它甚至没有警告就成功了,并且另一个用户的 SSH 连接突然终止。我的问题是,有没有办法像针对本地用户的政策那样防止这种情况发生?我已经查看了手册页,sshd_config但找不到任何似乎相关的内容。


编辑(附加信息。):

网络上有 4 个操作系统:Mandriva 2009、Mandriva 2010.2、Mandriva 2011 和 Ubuntu 11.04。我所指的具体情况是 SSH 用户位于 Mandriva 2009 主机上,本地用户位于 Mandriva 2011 主机上。

Mandriva 2009 主机使用 GNOME 2.28 环境,2010.2 主机使用 GNOME 2.32,2011 主机使用 KDE Plasma,Ubuntu 11.04 主机使用 Unity。


更新

正如我在这个问题中所指出的,我查看了下面的polkit操作/usr/share/polkit-1/actions/并发现(在文件中org.freedesktop.consolekit.policy)一个称为org.freedesktop.consolekit.system.stop-multiple-users抛出消息的操作

System policy prevents stopping the system when other users are logged in
Run Code Online (Sandbox Code Playgroud)

我在想(由于org.freedesktop.*命名约定)这是通过 D-BUS 发送到 DM 的某种信号。我想如果我能找出触发这个polkit动作的信号,我应该能够修改它的行为。有任何想法吗?


更新 2

我今天尝试了一个小实验,它给了我非常奇怪的结果。我尝试通过 SSH 登录到一个盒子,并确保没有其他用户登录到任何 …

shutdown ssh pam ubuntu mandriva

20
推荐指数
1
解决办法
4203
查看次数

系统管理员是否有可能窃听他/她用户的终端?

当登录到一台机器时,我可以从w. 作为系统管理员,我是否可以在用户不知情的情况下窃听此终端?换句话说,我希望看到在这个终端上所做的一切都作为我自己终端上的输出。

请注意以下事项:

  • 这不是用于监视用户活动的实际用例:我知道有系统审计工具可以做到这一点。我只是好奇是否可以做到。
  • 我知道这个问题,它似乎没有涵盖我要问的问题,因为所有解决方案都表明存在侵入性(用户会知道我在做什么)或产生太多噪音(strace解决方案)。接近的一种解决方案是建议使用gdb. 但这只能让我看到另一个终端的标准输出。

我试过的

我从我的终端试过这个:

tee /dev/pts/user_pts </dev/pts/user_pts
Run Code Online (Sandbox Code Playgroud)

这使我可以在用户键入时看到用户在另一个伪终端中键入的每个字符。问题是,每隔几个字符,它就会“跳过”:它会在一个终端设备上显示一个流氓字符,而不是另一个。它还可以防止从用户的伪终端设备执行任何命令。我不确定为什么会发生这种情况以及是否有办法改进它。

我想看什么

USER TERMINAL        |    MY TERMINAL
$ echo "Test"        |    # slick_command_here
Test                 |    echo "Test"
$                    |    Test
Run Code Online (Sandbox Code Playgroud)

administration io-redirection

17
推荐指数
2
解决办法
2416
查看次数

当我从 GUI 按下“关机”时会发生什么?

很长一段时间以来,我一直在反对这一点。它与这个问题有关。我想知道当我选择从 GUI 关闭我的 Linux 机器时会发生什么。这似乎记录不佳(如果有的话)。

理想情况下,我希望得到一个与 DE 和 OS 无关的答案。除此之外,我对运行 Gnome 的 Mandriva 2010.1 和 Debian 6.x (Squeeze) 和 7.0 (Wheezy) 的具体情况感兴趣。(如果你密切关注,是的,那就是 Gnome 2 和 Gnome 3)

基本上,我想知道当我按“关闭”或“重新启动”时启动了哪个命令/脚本/脚本序列,以便我可以修改它们的行为。我看过的一些论坛帖子建议进行黑客攻击,/etc/polkit-1/*但例如,这个目录结构只是我的 Debian (Squeeze) 机器上的一个骨架。

任何人都可以帮忙吗?


编辑

到目前为止我尝试过的

  • shutdown用我自己的脚本替换了可执行文件。这不起作用:当我按下shutdownGnome 时,不执行我的脚本就注销了。
  • 尝试编辑 Gnome 2 菜单。不高兴:“关机”、“注销”和“锁定屏幕”选项不会出现在菜单编辑器中。
  • 看了一下/usr/share/menu,没什么帮助。

解决方案的可能途径

  • strace使用 GUI 选项(这甚至可能吗?)
  • 查看shutdown的源代码
  • 查看gnome-session的源代码

更新

根据我对下面答案的评论,我查看了下面的polkit操作/usr/share/polkit-1/actions/并发现(在文件中org.freedesktop.consolekit.policy)一个称为org.freedesktop.consolekit.system.stop-multiple-users抛出消息的操作

System policy prevents stopping the system when other users …
Run Code Online (Sandbox Code Playgroud)

shutdown gnome debian polkit gnome3

16
推荐指数
1
解决办法
3579
查看次数

如何将多页文本从终端复制到剪贴板?

我正在我的机器上查看一个软件的手册页,我需要复制粘贴一些文本,但文本远不止一页。我知道我可以将输出定向到文件并使用基于 UI 的软件(例如gedit)来复制我需要的文本。但这可以从终端完成吗?

Joseph建议了一个命令行方法(对我来说有点复杂,我还不太擅长 Linux 上的正则表达式)。但我想知道是否有办法在我还在终端上时使用 mouse来做到这一点。

我希望我得到一个通用的答案,但是,我使用的是 Ubuntu。

less man copy-paste clipboard

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

为什么 SSH 不咨询 /etc/hosts?

我正在管理一个用户通过 NIS 进行身份验证的网络环境。除了一台机器,所有机器都可以通过 SSH 连接到服务器。在有问题的机器上,我收到消息

ssh: connect to host servername port 22: Connection refused

我比较strace了有问题的机器和可以正确通过 SSH 连接到服务器的机器的输出。
事实证明,无法通过 SSH 连接到服务器/etc/hosts的机器不会进行咨询,而可以通过 SSH 正确连接的机器会进行咨询。两台机器都/etc/hosts设置了服务器的名称和 IP。最后,不咨询的机器/etc/hosts最终尝试连接到 127.0.0.1(localhost) 并失败并显示上述消息。什么可能导致这种情况?

附加信息:

  • 我尝试通过 SSH 连接的服务器也充当名称服务器,两台机器在尝试通过 SSH 连接时都会查询它。
  • 不能到SSH服务器可以正确地SSH到其他机器时,我做的机器
    ssh machinename
    strace日志显示机器咨询名称服务器(这时候成功地)和管理,以正确解析远程计算机的名称,并连接到它。

编辑:我很乐意提供您认为可能有助于解决此问题的任何其他信息。

ssh hosts

14
推荐指数
1
解决办法
4528
查看次数

在屏幕上实时绘图

我想有这样的功能在Linux上,Xorg的,因此我可以在桌面上草图下面的例子形象。有人有建议吗?

在此处输入图片说明

xorg

13
推荐指数
3
解决办法
5297
查看次数

转置(交换行和列)文本文件的命令

当前是否有一个通用命令可以“旋转”输入。

例如

#labeled.file
name: bob
title: code monkey

name: joe
title: pointy haired
Run Code Online (Sandbox Code Playgroud)

转换为:

name title
bob  code monkey
joe  pointy haired
Run Code Online (Sandbox Code Playgroud)

反之亦然

linux command-line coreutils text-processing

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

从给定的一组模式中删除不以模式开头的行

我有一个包含如下数据的文件:

report aaaaaaaa  
-  ..  
-th bbbbbbbbb  
-to ccccccccc

.. --.
Run Code Online (Sandbox Code Playgroud)

问题:我想删除任何不以以下字符串开头的行:

report  
-th  
-to
Run Code Online (Sandbox Code Playgroud)

这意味着欲望输出将删除所有中间不需要的点和散列,看起来像这样:

report aaaaaaaa  
-th bbbbbbbbb  
-to ccccccccc
Run Code Online (Sandbox Code Playgroud)

sed// awk/ grepetc 任何可行的解决方案。

grep sed awk text-processing

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

转换 tar 存档的路径而不提取它

GNUtar(1)有一个简洁的选项,称为--transform. 从手册页:

--transform, --xform EXPRESSION
使用 sed 替换 EXPRESSION 来转换文件名

这允许在提取存档时动态转换路径名,以便您可以控制提取的位置和方式。

我的问题是,有没有办法在原位执行类似的转换;即,不提取存档?

例子

[user@host]$ tar tf test.tar
./foo/blah  ./foo/bleh
[user@host]$ some_deep_magic 's/foo/bar/' test.tar
[user@host]$ tar tf test.tar
./bar/blah  ./bar/bleh
Run Code Online (Sandbox Code Playgroud)

用例

我正在tar向基本上一无所知的最终用户分发一个存档,并希望它能够在不受我干扰的情况下提取到正确的路径中。我试图避免提取存档,重命名目录和重新打包的琐碎解决方案,因为存档很大。

tar

11
推荐指数
1
解决办法
8168
查看次数