Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

4
如何撤消`set -x`?
我输入set -x了终端。 现在终端继续在我的输出上打印最后运行的命令,因此该命令 ~]$echo "this is what I see" 退货 + echo 'this is what I see' this is what I see 没有手册页set,我该如何set -x关闭?
77 shell 

4
交换如何这么慢?
我以某种方式碰巧换出了14 GB的内存。杀死了罪魁祸首之后,我又有了大量的可用内存,因此我想我可以再次引入重要数据。因此,使用32 GB中的5 GB和14 GB的交换空间,我跑了swapoff -a.. 4小时后,大约一半的工作完成了。 这意味着不到1 MB / s,而我可以轻松复制200 MB / s。我的交换已加密,但是所有普通分区也都加密了,使用es-ni不会导致明显的CPU负载(填充交换空间仅花费了几分钟)。我看到没有特别的理由进行优化swapoff,但是我想知道它怎么会变慢呢? 只需添加更多数据:我的主内存为32 GB,并且4个硬盘中的每一个都有32 GB的交换空间(肯定是个大问题,但是谁在乎呢?)。整个交换空间可以在不到5分钟的时间内被(解密并)读取: time -p sudo sh -c 'for i in /dev/mapper/cryptswap?; do md5sum $i & done; wait' 014a2b7ef300e11094134785e1d882af /dev/mapper/cryptswap1 a6d8ef09203c1d8d459109ff93b6627c /dev/mapper/cryptswap4 05aff81f8d276ddf07cf26619726a405 /dev/mapper/cryptswap3 e7f606449327b9a016e88d46049c0c9a /dev/mapper/cryptswap2 real 264.27 读取分区的一部分不会比读取全部分区慢。然而,阅读其中的1/10大约需要100倍的时间。 我观察到,在swapoff这两个期间,CPU大部分都处于空闲状态(可能是一个内核的10%),磁盘也处于空闲状态(由LED进行“测量”)。我还看到交换空间被一个接一个地关闭。
77 swap 

1
Bash for循环中“ do”关键字的目的是什么?
doBash for循环语法中关键字的目的是什么?对我来说,这是多余的。 for i in `seq 1 2`; do echo "hi"; done 为什么不是这样的语法? for i in `seq 1 2`; echo "hi"; done 我确信它确实可以达到目的。我只想学习。
76 bash  shell  for 

4
压缩文件夹的内容而不包含文件夹本身
我有一个目录folder,看起来像这样: folder -> root_folder -> some files 我想将此目录压缩到中zipped_dir,我尝试过: zip -r zipped_dir.zip folder/* 但这会生成一个如下所示的ZIP: zipped_dir -> folder -> root_folder -> some files 换句话说,它包括我要压缩其内容的目录。如何在不移动任何内容的情况下从ZIP中排除此父目录? IE浏览器,我想要这个最终结果: zipped_dir -> root_folder -> some files
76 command-line  zip 

8
如何在Apache中禁用SSLv3?
今天,每个人似乎都在谈论POODLE漏洞。每个人都建议使用以下配置指令在Apache中禁用SSLv3: SSLProtocol All -SSLv2 -SSLv3 而不是默认值 SSLProtocol All -SSLv2 我这样做并没有喜悦–在使用各种工具(这里是一个快速的工具)反复测试之后,我发现我的服务器很高兴接受SSLv3。 是的,我确实重新启动了Apache。是的,我grep对所有配置文件都进行了递归操作,而且我在任何地方都没有任何覆盖。不,我没有使用某些古老的Apache版本: [root@server ~]# apachectl -v Server version: Apache/2.2.15 (Unix) Server built: Jul 23 2014 14:17:29 那么,有什么用呢?如何真正禁用Apache中的SSLv3?
76 ssl  apache-httpd 

8
/ usr / sbin / nologin作为登录shell是否出于安全目的?
在我的/etc/passwd文件中,我可以看到www-dataApache所使用的用户以及各种系统用户都具有/usr/sbin/nologin或/bin/false作为其登录外壳。例如,以下是几行: daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin games:x:5:60:games:/usr/games:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin syslog:x:101:104::/home/syslog:/bin/false whoopsie:x:109:116::/nonexistent:/bin/false mark:x:1000:1000:mark,,,:/home/mark:/bin/bash 因此,如果我尝试交换这些用户中的任何一个(有时我想检查我对他们的权限的了解,并且可能还有其他至少至少一半的理智的原因),则我将失败: mark@lunchbox:~$ sudo su www-data This account is currently not available. mark@lunchbox:~$ sudo su syslog mark@lunchbox:~$ 当然,这不算什么麻烦,因为我仍然可以通过这样的方法为他们启动外壳程序: mark@lunchbox:~$ sudo -u www-data /bin/bash www-data@lunchbox:~$ 但这让我想知道拒绝这些用户的登录外壳将达到什么目的。环顾互联网进行解释,许多人声称这与安全性有关,并且每个人似乎都同意更改这些用户的登录外壳在某种程度上是个坏主意。这是引号的集合: 将Apache用户的shell设置为非交互式通常是一种很好的安全做法(实际上,所有不必交互式登录的服务用户都应将其shell设置为非交互式)。 - https://serverfault.com/a/559315/147556 用户www-data的shell设置为/ usr / sbin / nologin,这是有充分理由的。 - https://askubuntu.com/a/486661/119754 [系统帐户] 可能是安全漏洞,尤其是在启用了外壳程序的情况下: 坏 bin:x:1:1:bin:/bin:/bin/sh 好 bin:x:1:1:bin:/bin:/sbin/nologin …
76 shell  security  users  login 


1
使cd跟随符号链接
我在主目录中将代码作为sshfs挂载,但是层次结构很难记住,因此我在主目录中创建了一个指向该目录的符号链接。有没有一种方法可以使当我cd到该符号链接时,而不是cding到该符号链接,它将实际上cd到该目录? 如果问题不清楚,请参见以下示例: foo@foo:~$ ls -l lrwxrwxrwx 1 foo foo 5 2012-11-14 08:20 foo -> bar/bar foo@foo:~$ cd foo foo@foo:~/bar/bar/$


6
如何获取xmodmap的密钥代码?
我试图用来xmodmap重新映射Dell L100键盘上的Alt/ Super键,并且在获取键码时遇到问题。 例如,使用xev不会给我以下代码Alt FocusOut event, serial 36, synthetic NO, window 0x4a00001, mode NotifyGrab, detail NotifyAncestor FocusIn event, serial 36, synthetic NO, window 0x4a00001, mode NotifyUngrab, detail NotifyAncestor KeymapNotify event, serial 36, synthetic NO, window 0x0, keys: 122 0 0 0 0 0 0 0 0 0 0 0 0 …


15
如何grep特定行_和文件的第一行?
假设一个简单的grep如: $ psa aux | grep someApp 1000 11634 51.2 0.1 32824 9112 pts/1 SN+ 13:24 7:49 someApp 这提供了很多信息,但是由于缺少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 当然,我可以为grep专门为ps添加一个正则表达式: $ ps …


7
如何在别名命令上使用“哪个”?
像大多数用户一样,我设置了一堆别名来为常用程序提供默认的标志集。例如, alias vim='vim -X' alias grep='grep -E' alias ls='ls -G' 问题是,如果我想使用which上看到我的vim/ grep/ ls/等从,别名的方式来获得: $ which vim vim: aliased to vim -X 这是有用的输出,但是在这种情况下不是我想要的;我知道vim是别名,vim -X但我想知道它 vim的来源。 除了临时取消定义别名(以便我可以which在上面使用)之外,是否有一种简单的方法来which“解开”别名并在其上运行? 编辑:似乎which是一个shell内置的,在不同的shell上具有不同的行为。在Bash中,SiegeX对--skip-alias旗帜的建议起作用了。但是,我在Zsh上。那里是否存在类似的东西?
76 shell  zsh  alias  which 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.