小编spu*_*der的帖子

为什么你应该总是使用 `rpm -U` 而不是 `rpm -i` 来安装软件包?

rpm 有一个-i( --install) 选项来安装一个包
rpm 有一个-U( --upgrade) 选项来安装或升级一个包

Red Hat文档表明,rpm -i是完全可以接受的。

然而,我见过的每个文档都推荐使用-U,即使是第一次安装包。

为什么rpm -U通常优先于rpm -i

rpm

19
推荐指数
1
解决办法
4005
查看次数

`adduser --disabled-login` 有什么作用?

我正在遵循的安装文档指示添加这样的用户:

sudo adduser --disabled-login --gecos 'GitLab' git
Run Code Online (Sandbox Code Playgroud)

--disabled-login我搜索过的大多数手册页中都没有该标志。

我创建了两个用户,一个带有--disabled-login( foo),一个没有 ( git)。

据我所知,--disabled-login旗帜什么也不做。我仍然可以su给两个用户,并且都/bin/bash用作他们的登录 shell。

我能看到的唯一区别是getent passwd在禁用登录的用户的主文件夹之前有额外的逗号。有没有文件,我可以找到,表示什么这意味着。

root@gitlab:~# getent passwd git
git:x:998:998:GitLab:/home/git:/bin/bash  

root@gitlab:~# getent passwd foo
foo:x:1001:1002:GitLab,,,:/home/foo:/bin/bash
Run Code Online (Sandbox Code Playgroud)

更新 #1

我发现了另一个区别,一个用户*的密码是 a,另一个用户有!

root@gitlab:~# getent shadow git
git:*:15998::::::
root@gitlab:~# getent shadow foo
foo:!:15998:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)

--disabled-login在 Ubuntu 上究竟做了什么?

useradd

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

inotify 是如何工作的?

根据维基百科

inotify 是一个 Linux 内核子系统,用于通知文件系统的变化。它取代了之前的 dnotify。

同步文件的程序(例如 crashplan、dropbox、git)在用户增加的用户指南中推荐max_user_watches123)。

根据我对 inotify 的理解,操作系统被“告知”文件已被更改,而不是要求操作系统“去寻找”更改。

我假设每个目录中都创建了一个“inotify”文件。这样对吗?有没有办法从命令行与 inotify 交互?

资源
为什么 inotify 事件在 NFS 挂载上有所不同?
Inotify 等待目录中的大量文件

inotify

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

如何执行多行grep

您将如何对出现在两行上的文本执行 grep?

例如:

pbsnodes 是我使用的返回 linux 集群利用率的命令

root$ pbsnodes
node1
    state = free
    procs = 2
    bar = foobar

node2
    state = free
    procs = 4
    bar = foobar

node3
    state = busy
    procs = 8
    bar = foobar
Run Code Online (Sandbox Code Playgroud)

我想确定与处于“空闲”状态的节点匹配的进程数。到目前为止,我已经能够确定“进程数”和“处于空闲状态的节点”,但我想将它们组合成一个显示所有空闲进程的命令。

在上面的例子中,正确答案是 6 (2+4)。

我拥有的

root$ NUMBEROFNODES=`pbsnodes|grep 'state = free'|wc -l`
root$ echo $NUMBEROFNODES
2

root$ NUMBEROFPROCS=`pbsnodes |grep "procs = "|awk  '{ print $3 }' | awk '{ sum+=$1 } END { print sum }'`
root$ echo $NUMBEROFPROCS
14
Run Code Online (Sandbox Code Playgroud)

如何搜索读取为“procs = …

grep sed awk text-processing

15
推荐指数
3
解决办法
5875
查看次数

如何自动接受 epel gpg 密钥

我第一次从 epel 安装软件包时,系统会提示我是否要导入 GPG 密钥。

请注意在安装 redis 时如何出现 2 个“这是正常的”提示吗?

[root@us-devops-build02 yum.repos.d]# yum install redis
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
.. truncated for readability

Total download size: 213 k
Installed size: 668 k
Is this ok [y/N]: y
Downloading Packages:
redis-2.4.10-1.el6.x86_64.rpm                                                                                                                                                                                                                                                                          | 213 kB     00:00     
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Retrieving key from http://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
Importing GPG key 0x0608B895:
 Userid: "EPEL (6) <epel@fedoraproject.org>"
 From  : http://download.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
Is this ok [y/N]: y
Run Code Online (Sandbox Code Playgroud)

这会导致 …

rpm gpg package-management

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

sed - 删除文件中最后一次出现的字符串(逗号)?

我有一个非常大的 csv 文件。你将如何,用 sed (或类似的)删除最后一个?

...
[11911,0,"BUILDER","2014-10-15","BUILDER",0,0],
[11912,0,"BUILDER","2014-10-15","BUILDER",0,0],
[11913,0,"BUILDER","2014-10-15","BUILDER",0,0],
]
Run Code Online (Sandbox Code Playgroud)

期望输出

...
[11911,0,"BUILDER","2014-10-15","BUILDER",0,0],
[11912,0,"BUILDER","2014-10-15","BUILDER",0,0],
[11913,0,"BUILDER","2014-10-15","BUILDER",0,0]
]
Run Code Online (Sandbox Code Playgroud)

以下 sed 命令将删除每行的最后一次出现,但我想要每个文件。

sed -e 's/,$//' foo.csv
Run Code Online (Sandbox Code Playgroud)

这也不起作用

sed '$s/,//' foo.csv
Run Code Online (Sandbox Code Playgroud)

sed

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

ssh 配置通配符以避免输入用户名

我经常通过 ssh 进入 openstack 实例。所有实例都位于专用 vlan 和子网 (10.2.xx) 上。所有实例都具有相同的用户名 (bob)

我像这样连接:

ssh bob@10.2.x.x
Run Code Online (Sandbox Code Playgroud)

或有时像这样

ssh 10.2.x.x -l bob
Run Code Online (Sandbox Code Playgroud)

当我通过 ssh 进入 10.2.xx 子网上的任何虚拟机时,是否可以将我的笔记本电脑配置为自动使用名称 bob?我不想在连接到任何其他子网上的机器时自动使用 bob。

看起来ssh 配置不支持通配符。(如果我错了,请纠正我)。我想也许别名可以做到这一点,但我不确定语法是什么。

ssh configuration

12
推荐指数
1
解决办法
9496
查看次数

/usr 和 /home 应该在不同的分区上吗?

在学习lcpi考试的过程中,我遇到了以下说法。

如果有多个磁盘可用,最好在不同的分区上也有 /usr 和 /home 目录。http://en.wikibooks.org/wiki/LPI_Linux_Certification/Design_Hard_Disk_Layout

对于桌面工作站,将您的主目录放在单独的驱动器或分区上是有意义的。

我登录了很多 linux 服务器,我从未见过系统管理员将这些文件夹放在不同的分区上。

在 linux 服务器上分隔这些文件夹是常见的做法吗?
您可能出于什么原因将 /usr 和 /home 分开?(除了使重新安装更容易)。

directory-structure

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

你可以有多个失物招领目录吗?

mklost+found直到我读到这个问题,我才知道这个命令。

mklost+found命令将在 pwd 中创建一个新的 lost+found 目录。

  1. 为什么你需要运行这个命令?lost+found 目录已经存在于我检查过的每个发行版上的 / 中。

  2. 如果您有多个丢失和找到的目录会发生什么?恢复的数据片段会转到 / 中的 lost+found 目录,还是会转到最近创建的 lost+found 目录?

我不确定如何故意创建一个数据片段来测试这个。

filesystems lost-found

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

可预测的网络接口名称破坏了虚拟机迁移

/etc/networking/interfaces使用“可预测的网络接口名称”时如何重置?

早于 15.10 的 Ubuntu 版本使用网络适配器名称,例如:

  • eth0
  • eth1
  • eth2

更换网卡或将虚拟机移动到新的管理程序,会导致 Linux 增加接口编号。删除/etc/udev/rules.d/70-peristent-net.rules将使 Linux 重用eth0

Ubuntu 15.10 和更新版本使用“可预测的网络接口名称”。网络适​​配器名称源自 mac 地址。

  • ens3
  • ens32
  • ens192

迁移虚拟机时,网络不会启动,因为/etc/network/interfaces仍然引用旧的不存在的网络适配器。

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ens32
iface ens32 inet dhcp
pre-up sleep …
Run Code Online (Sandbox Code Playgroud)

network-interface systemd-networkd

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