小编Ste*_*ski的帖子

FreeBSD:如何修复“ping:sendto:无可用缓冲区空间”?

我正在尝试 ping 远程主机,但出现错误。

# ping 192.168.80.1
PING 192.168.80.1 (192.168.80.1): 56 data bytes
ping: sendto: No buffer space available
ping: sendto: No buffer space available
^C
--- 192.168.80.1 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
Run Code Online (Sandbox Code Playgroud)

它适用于其他主机:

# ping 192.168.16.1
PING 192.168.16.1 (192.168.16.1): 56 data bytes
64 bytes from 192.168.16.1: icmp_seq=0 ttl=254 time=0.442 ms
64 bytes from 192.168.16.1: icmp_seq=1 ttl=254 time=0.402 ms
^C
--- 192.168.16.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss …
Run Code Online (Sandbox Code Playgroud)

freebsd networking

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

awk:强制返回状态?

这是我之前的问题的后续。

我正在使用这个方便的代码段验证 /etc/passwd 中的字段数。在以下示例中,用户“fieldcount1”和“fieldcount2”的字段数错误:

$ awk -F: ' NF!=7 {print}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
fieldcount2:blah::blah:1002:100:fieldcount2:/home/fieldcount2:/bin/bash:
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)

您会注意到,awk 将退出,返回状态为 0。从它的角度来看,这里没有问题。

我想将此 awk 语句合并到一个 shell 脚本中。我想打印所有错误的行,并将返回码设置为 1(错误)。

我可以尝试强制特定的退出状态,但是 awk 只打印一行:

$ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)

我可以强制 awk 以“1”的返回状态退出,并打印所有匹配的行吗?

awk shell-script text-processing

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

bash:使用变量存储 stderr|stdout 重定向

有没有办法通过变量重定向 stdout 和 stderr,比如在脚本中添加命令选项?

例如我有一个脚本:

#!/bin/bash -x
TEST=">/dev/null 2>&1"
OPT='-p -v'
mkdir $OPT 123/123/123 $TEST
Run Code Online (Sandbox Code Playgroud)

我可以看到 OPT 被替换为-p没有任何问题,bash 将其解释为选项。但重定向解释为目录名称。

$ ./test.sh 
+ TEST='>/dev/null 2>&1'
+ OPT='-p -v'
+ mkdir -p -v 123/123/123 '>/dev/null' '2>&1'
mkdir: created directory `123/123'
mkdir: created directory `123/123/123'
mkdir: created directory `>/dev'
mkdir: created directory `>/dev/null'
mkdir: created directory `2>&1'
Run Code Online (Sandbox Code Playgroud)

有什么办法可以说 bash,$VAR 是重定向,而不是目录名称。

附注。可能是我走错了路,但我想从我的脚本中制作可选的详细或非详细输出。但是即使在非详细模式下我也需要一些输出,因此我不能只重定向整个 stdout 和 stderr,只能从脚本中的某些命令重定向。

bash io-redirection brace-expansion stdout

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

RHEL/CentOS 是执行 /etc/cron.d/* 下的所有 cronjob 文件,还是仅执行其中的一部分?

这是一个红帽企业 Linux 5 系统 (RHEL)。我们使用 CFengine 管理这个系统。

我们有几个 cronjob,它们的运行频率是平时的两倍。我检查了下的 cronjobs /etc/cron.d/,该目录包含名为 的实际脚本host-backup,还包含名为 的 cfengine 备份文件host-backup.cfsaved,如下所示:

/etc/cron.d/host-backup
/etc/cron.d/host-backup.cfsaved
Run Code Online (Sandbox Code Playgroud)

此操作系统是执行 处的所有文件/etc/cron.d/*,还是仅执行匹配特定模式的文件。我可以配置这个吗,这是在哪里定义的?

我在 RHEL 或 CentOS 文档中找不到这个答案。

cron rhel

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

这个网络套接字有什么用?

我正在尝试使用 NTP 更新我机器上的时间。但是,它给了我一个错误:

host # ntpdate ntp1.example.org
10 Aug 12:38:50 ntpdate[7696]: the NTP socket is in use, exiting
Run Code Online (Sandbox Code Playgroud)

错误“正在使用套接字”是什么意思?我怎样才能看到什么在使用这个套接字?

这发生在我的 CentOS 4.x 系统上,但我也在 FreeBSD 7.x、Ubuntu 10.04 和 Solaris 10 上看到它。

freebsd networking process open-files

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

“运营商”用户的重点是什么?

许多 un*x 系统附带一个名为“operator”的用户帐户。这个账户的目的是什么?

某些系统是否真的使用了这个帐户,或者这更多是历史遗留问题?您是否曾在您的组织中使用过此帐户?

“操作员”帐户的主目录往往设置为类似/root/。为什么是这样?

Linux:

Login: operator                         Name: operator
Directory: /root                        Shell: /sbin/nologin
Run Code Online (Sandbox Code Playgroud)

或 FreeBSD:

Login: operator                         Name: System Operator
Directory: /                            Shell: /usr/sbin/nologin
Run Code Online (Sandbox Code Playgroud)

在 FreeBSD 上,一些文件实际上归用户“operator”所有:

# find / -user operator -exec ls -ld {} \;
drwx------  2 operator  operator  512 Apr 20 17:11 /var/db/entropy
Run Code Online (Sandbox Code Playgroud)

这个问题对 google 来说非常困难,因为几乎所有的 google 搜索结果都与 shell 或代码操作符有关。

users administration history

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

从标准输出中删除行尾字符?多行合并为一行

我有一个输出以下文本的脚本。这是Netopia 2210-02 ADSL2调制解调器的输出。

ADSL Line State:        Up
ADSL Startup Attempts:  1
ADSL Modulation:        DMT
ADSL Data Path:         Fast
Datapump Version:       DSP 7.2.3.0, HAL 7.2.1.0
SNR Margin:                   8.20        9.00 dB
Line Attenuation:            57.50       31.00 dB
Output Power:                17.09       12.34 dBm
Errored Seconds:                 0           0
Loss of Signal:                  0         476
Loss of Frame:                   0           0
CRC Errors:                  57921         416
Data Rate:                    2880        1024
Run Code Online (Sandbox Code Playgroud)

如何删除每行的行尾字符?我希望输出看起来像这样(是的,它很丑):

ADSL Line State:        Up ADSL Startup Attempts:  1 ADSL Modulation:        DMT ADSL Data Path:         Fast Datapump …
Run Code Online (Sandbox Code Playgroud)

shell shell-script

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

根据 zsh 中的用户或 root 更改提示颜色

在 zsh 中,您可以%#PS1(或任何PROMPT变量)中有一个,这基本上意味着%如果是用户则显示或#如果是 root则显示。我想知道是否有任何方法可以影响这一点,以便%#改变颜色取决于它是用户还是根用户(根为红色,用户为蓝色)显而易见的方法只是改变PS1我的根~/.zshrc但考虑这已经是一个特殊的符号了,我想知道是否可能没有一种方法可以PS1对两者使用相同的符号......特定%#于 zsh 的东西(我敢肯定还有其他的 hacks 我也可以这样做)一个 if then 语句)。

shell colors prompt zsh

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

/etc/cron.daily/foo :向特定用户而不是 root 发送电子邮件?

我正在运行 CentOS 5.5。

我们有几个 cronjob 存储在 /etc/cron.daily/ 中。我们希望其中一些 cronjob 的电子邮件发送到特定的电子邮件地址,而 /etc/cron.daily/ 中的其余电子邮件应发送到默认电子邮件地址 (root@localhost)。

/etc/cron.daily/ 中的 Cronjobs 从 /etc/crontab 文件运行。/etc/crontab 指定了“邮件”字段。我可以通过在我的 /etc/cron.daily/foo cronjob 中设置 MAILTO 来覆盖它吗?

处理这个问题的最佳方法是什么?

linux cron

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

根据背景颜色更改PS1颜色?

我了解到我可以更改PS1的格式,尤其是字符串的颜色。那么,是否可以根据外壳的背景颜色更改颜色?或者,如何检测外壳的背景颜色?

colors bash prompt terminal

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