我正在尝试 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) 这是我之前的问题的后续。
我正在使用这个方便的代码段验证 /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”的返回状态退出,并打印所有匹配的行吗?
有没有办法通过变量重定向 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,只能从脚本中的某些命令重定向。
这是一个红帽企业 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 文档中找不到这个答案。
我正在尝试使用 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 上看到它。
许多 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 或代码操作符有关。
我有一个输出以下文本的脚本。这是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) 在 zsh 中,您可以%#在PS1(或任何PROMPT变量)中有一个,这基本上意味着%如果是用户则显示或#如果是 root则显示。我想知道是否有任何方法可以影响这一点,以便%或#改变颜色取决于它是用户还是根用户(根为红色,用户为蓝色)显而易见的方法只是改变PS1我的根~/.zshrc但考虑这已经是一个特殊的符号了,我想知道是否可能没有一种方法可以PS1对两者使用相同的符号......特定%#于 zsh 的东西(我敢肯定还有其他的 hacks 我也可以这样做)一个 if then 语句)。
我正在运行 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 来覆盖它吗?
处理这个问题的最佳方法是什么?
我了解到我可以更改PS1的格式,尤其是字符串的颜色。那么,是否可以根据外壳的背景颜色更改颜色?或者,如何检测外壳的背景颜色?