小编Den*_*son的帖子

如何诊断和修复丢失的驱动器空间?

/在 2T 驱动器上有一个小的 ext3分区,它的可用空间似乎存在差异。我如何确定导致它的原因以及如何修复它。

在尝试了我能想到的一切之后,我在启动时强制执行了 fsck,但没有任何影响。

我有其他配置相同的系统,但没有出现这种情况。

# df -h /
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9.7G  8.9G  318M  97% /

# du -shx --max-depth 1 /
5.2G    /

# lsof | awk 'BEGIN {t=0} /(deleted)/ {t+=$7} END {print t}'
0

# tune4fs -l /dev/sda1 | grep -E 'state|Free|Reserve|size|Inode'
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file
Filesystem state:         clean
Inode count:              2621440
Reserved block count:     131029
Free blocks:              212317
Free inodes:              2487281 …
Run Code Online (Sandbox Code Playgroud)

partition disk-usage fsck

5
推荐指数
1
解决办法
1430
查看次数

如何以编程方式向 Bash 历史记录添加条目并使时间戳正常工作?

在 CentOS 6.2 和 Bash 4.1.2(1) 上,我添加了一个文件,/etc/profile.d其中包含:

HISTTIMEFORMAT='%c : '
history -s "# some text as a marker"
Run Code Online (Sandbox Code Playgroud)

只要变量被设置并且标记被写入用户的历史列表(以及~/.bash_history他们的时间exit),这就会起作用。

问题是:

  • history -s 添加标记时不添加时间戳
  • 回滚历史记录在标记处停止(~/.bash_history文件未读入内存)
  • 标记评论的历史条目有“??” 而不是(缺失的)时间戳

我尝试添加:

history -s "#$(date +%s)"
Run Code Online (Sandbox Code Playgroud)

在另一个history -s命令之前,但 Bash 将其视为历史命令而不是时间戳,即使它的格式相同。

另一种选择是将标记和时间戳直接附加到~/.bash_history,但是当它稍后被附加时,它们与会话历史记录中的活动不相邻。由于其他用户或单个用户的多个会话,可能会有其他会话附加在标记及其相关会话之间。

有没有办法解决这些问题?

更新:

我已经尝试添加set -o history(并删除该history -s "#$(date +%s)"行)并且它似乎解决了上面提到的历史滚动问题,但是缺少时间戳仍然是一个问题。

bash command-history

5
推荐指数
1
解决办法
1710
查看次数

getent shadow 显示某些用户的密码哈希

如果我执行

sudo getent shadow
Run Code Online (Sandbox Code Playgroud)

我看到所有拥有密码的本地用户的密码哈希。对于大多数 LDAP 帐户,我只*在密码字段中看到。但是,对于一些 LDAP 用户,我看到了密码哈希。我已经确认他们没有本地帐户(即没有输入/etc/passwdgetent passwd username返回一行)。

事实上,以我自己的身份登录,我的用户条目是带有*.

有一个运行 OpenLDAP 的 LDAP 服务器和一组帐户(树中的一个分支)。

LDAP 客户端服务器正在运行nscd并且libnss-ldap.

这是/etc/nsswitch.confLDAP 客户端服务器上的一部分:

passwd:         files ldap
group:          files ldap
shadow:         files ldap
Run Code Online (Sandbox Code Playgroud)

在这种情况下,LDAP 用于验证用户登录 LDAP 客户端服务器的身份,并且在某些时候,身份验证机制(在这种情况下为 PAM)必须根据存储的哈希值检查用户在登录时提供的密码的哈希值包含在 LDAP 数据库中。

每个用户的 LDAP 帐户都存储他们的密码哈希,并具有objectClassesposixAccountshadowAccount(以及其他值和设置)。

只有系统帐户在/etc/password和 中有本地条目/etc/shadow。用户帐户都在 LDAP 上(并且仅在那里)。LDAP 中的所有用户都有 userPassword 条目。

什么可能导致这种情况或我怎样才能解决它的原因?为什么不getent shadow为所有 LDAP 用户返回密码哈希?

password ldap authentication shadow getent

5
推荐指数
0
解决办法
4487
查看次数

删除重复的 Bash 支撑扩展

如果匹配中存在重叠,大括号扩展可以产生文件名的多个实例。

一个简单的例子:

mkdir testdir; cd testdir
touch abcd
for f in *{b,c}*; do something_to "$f"; done
# or more simply:
ls -l *{b,c}*
Run Code Online (Sandbox Code Playgroud)

这是一个非常简化的示例,仅用于说明。在这种情况下,单个文件abcd将被处理(或列出)两次。

如何才能最好地消除此列表的重复数据?

  • 可以使用关联数组。
  • 可以使用精心设计的 glob/brace 扩展,但这并不健壮。

bash wildcards brace-expansion

4
推荐指数
1
解决办法
89
查看次数