据我所知,[[是 的增强版本[,但是当我将其[[视为关键字并[显示为内置时,我感到困惑。
[root@server ~]# type [
[ is a shell builtin
[root@server ~]# type [[
[[ is a shell keyword
Run Code Online (Sandbox Code Playgroud)
TLDP说
内置命令可能是同名系统命令的同义词,但 Bash 在内部重新实现了它。例如,Bash echo 命令与 /bin/echo 不同,尽管它们的行为几乎相同。
和
关键字是保留字、标记或运算符。关键字对 shell 有特殊的意义,实际上是 shell 语法的构建块。例如,for、while、do 和 ! 是关键字。与内置函数类似,关键字被硬编码到 Bash 中,但与内置函数不同的是,关键字本身不是命令,而是命令结构的子单元。[2]
难道不应该使双方[和[[关键字?有什么我在这里想念的吗?此外,此链接再次确认两者[和[[应该属于同一类。
以下是我服务器上mysql和的内存使用情况apache。根据pmapsay的输出,mysql正在使用大约 379M,apache正在使用 277M。
[root@server ~]# pmap 10436 | grep total
total 379564K
[root@server ~]# pmap 10515 | grep total
total 277588K
Run Code Online (Sandbox Code Playgroud)
将其与 的输出进行比较top,我发现值几乎匹配。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10515 apache 20 0 271m 32m 3132 S 0.0 6.6 0:00.73 /usr/sbin/httpd
10436 mysql 20 0 370m 21m 6188 S 0.0 4.3 0:06.07 /usr/libexec/mysqld --basedir=....
Run Code Online (Sandbox Code Playgroud)
现在这些值绝对不是这两个进程的当前内存使用情况,因为如果是的话,它会超过ram我系统上的 512M ,我明白这些是分配给这两个进程的页面大小的事实,而不是真的他们积极使用的内存大小。现在,当我们使用 时pmap -x …
当它BOOTPROTO=none在/etc/sysconfig/network-scripts/ifcfg-eth0文件中说时是什么意思。
我记得曾经有过,BOOTPROTO=static并且非常清楚和直接地告诉我们,如果IPADDR=<x.x.x.x>给出an ,服务器将提供指定的 IP 地址。同样,BOOTPROTO=dhcp会寻找 DHCP 服务器以获取动态 IP 地址。红帽说:
BOOTPROTO=protocol
where protocol is one of the following:
none — No boot-time protocol should be used.
bootp — The BOOTP protocol should be used.
dhcp — The DHCP protocol should be used.
Run Code Online (Sandbox Code Playgroud)
这是否意味着如果我们不在 ifcfg-eth0 文件中指定 IP,它将查找 DHCP 服务器,如果指定了 IP,它会选择该静态 IP?
即使IPADDR=在 BOOTPROTO 设置为 none 时指定了 IP 地址,它寻找 DHCP 服务器并修改 /etc/resolv.conf 的可能性有多大?
背景:- 我们移动了数据中心,不得不更改许多服务器中的 IP 地址。我们已经修改/etc/resolv.conf了新 DNS 服务器的 …
有没有办法可以在我的 RHEL 机器上以非 root 用户身份打开一个新的“屏幕”会话?当我尝试以非 root 用户身份使用“screen”命令打开一个新屏幕时,它失败了,我收到以下消息:
Cannot open your terminal '/dev/pts/2' - please check.
Run Code Online (Sandbox Code Playgroud)
我进行了一些研究,发现有人建议更改 /dev/pts 上的权限,以授予非 root 用户(试图打开屏幕的用户)读/写访问权限。尽管它可能有效,但它看起来并不是一个巧妙的解决方案。是否有允许非 root 用户打开屏幕会话的“合法”方式?
编辑:我的 RHEL 5.5、6.2 和 6.5 机器上有这个问题。所有这些盒子上的屏幕版本都是“屏幕版本 4.00.03 (FAU) 23-Oct-06”。
PS:- 我知道我可以以 root 和 'su' 身份打开一个屏幕会话来启动我的命令/进程,但这不是我想要的。
在最近的服务器移动之后,我们正在解决这个奇怪的问题,即其中一个服务器无缘无故失去 n/w 连接并在几秒钟或几分钟内重新获得连接。在/var/log/messages dmesg或 mcelogs中没有它的踪迹。在试图调试这个时,我发出了strace ping google.com它说= -1 EAGAIN (Resource temporarily unavailable)。
有人可以了解这条消息的含义吗?ping解析 google.com,但它不会显示任何响应,就好像 ping 回复在防火墙中设置为拒绝一样。
sendmsg(3, {msg_name(16)={sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("74.125.131.113")}, msg_iov(1)=[{"\10\0005\321?i\0\3v\301lT\0\0\0\0\335\331\3\0\0\0\0\0\20\21\22\23\24\25\26\27"..., 64}], msg_controllen=0, msg_flags=0}, 0) = 64
recvmsg(3, 0x7fffd48b9cc0, 0) = -1 EAGAIN (Resource temporarily unavailable)
Run Code Online (Sandbox Code Playgroud)
PS:这是一个 VMware VM,运行 RHEL 6.5
有没有显示的方法或者有什么工具可以解析 crontab 表达式并以人性化的方式显示它?
10 6 * * * sh /usr/local/crons/file_check.sh
例如,对于上面的 cron,我希望上面的 cronjob 上的时间显示为
06:10 hrs
或以任何其他人性化的方式。
目前,我决定编写一个 shell 脚本或 python 来操作 的输出crontab -l以非技术人员可以理解下一次运行作业的方式显示它,但是如果有直接的方法,它会很棒。
PS:- 首选 bash 或 python 解决方案。
我有一个包含以下内容的文件:
[root@server list]# cat filenames.txt
[AAA','ACMEDEMO2','ACMEDEMO3','ACMEDEMO4','RENTCOGH','TESTENT','DORASINE','LOKAWINK','BBB]
[root@qa4app01 list]#
Run Code Online (Sandbox Code Playgroud)
我想这是一个名单,我python脚本使用,所以我试图改变AAA'到'AAA'和'BBB对'BBB',我想我会用sed和替换[用['和]用']。
为了确认,我试过这个:
[root@server list]# cat filenames.txt | sed "s/]/']/g"
[AAA','ACMEDEMO2','ACMEDEMO3','ACMEDEMO4','MENSCOGH','TESTENT','DORASINE','LOKAWINK','BBB']
[root@server list]#
Run Code Online (Sandbox Code Playgroud)
它起作用了,我能够]用']. 因此,因为AAA我只需要更改用左方括号替换右方括号和 sed 中的单引号并尝试以下操作:
[root@server list]# cat filenames.txt | sed -e "s/]/']/g" -e "s/[/['/g"
sed: -e expression #2, char 8: unterminated `s' command
[root@server list]#
Run Code Online (Sandbox Code Playgroud)
好的。我认为由于某种原因附加sed命令无法正常工作,为了检查这一点,我分别尝试sed了左方括号:
[root@server list]# cat filenames.txt | sed …Run Code Online (Sandbox Code Playgroud) 我们正在对一个 MySQL 问题进行故障排除,其中一些查询需要很长时间才能完成,我在 /var/log/messages 中看到了许多这样的条目:
Jan 28 05:52:15 64455-alpha01 kernel: [2529273.616327] INFO: task mysqld:4123 blocked for more than 120 seconds.
Jan 28 05:52:15 64455-alpha01 kernel: [2529273.616525] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jan 28 05:52:15 64455-alpha01 kernel: [2529273.616813] mysqld D 000000000000000d 0 4123 3142 0x00000080
Run Code Online (Sandbox Code Playgroud)
这是什么意思?它如何影响 MySQL 线程(4123 是线程 ID?)
/proc/sys/kernel/hung_task_timeout_secs我现在检查时的值是:
$ cat /proc/sys/kernel/hung_task_timeout_secs
120
Run Code Online (Sandbox Code Playgroud)
我特别想知道它如何影响流程?
我在一个论坛上读到,这意味着当该进程占用太多内存时会发生这种情况。
在阅读文件如何存储在文件系统中时,我创建了一个大小为 217 字节的测试文件。检查stat这个文件的输出,我看到这个文件占用了8个块。最初我认为,当块大小为 4096 字节且值Blocks:应1为8. 然后我读了this,this和this,并意识到该Blocks:值是文件占用的512字节空间的数量。由于一个块的最小大小是 4096 字节,即使是 2 字节大小的文件也会占用 8 个块(因为 4096/512 = 8)。
[root@server ~]# stat smallfile.txt
File: `smallfile.txt'
Size: 217 Blocks: 8 IO Block: 4096 regular file
Run Code Online (Sandbox Code Playgroud)
我在这里读到:
“每个扇区存储固定数量的用户可访问数据,传统上硬盘驱动器 (HDD) 为 512 字节,CD-ROM 和 DVD-ROM 为 2048 字节。较新的 HDD 使用 4096 字节 (4 KiB) 扇区,这是众所周知的作为高级格式 (AF)。”
我可以访问使用过的扇区大小为 512 字节的 HDD 的所有系统。所以我相信st_blocks(如我给出的第二个和第三个超链接所解释的)与硬盘驱动器的扇区大小相匹配?所以问题是:
我们使用常规/etc/init.d/jboss stop来停止我们机器上的 jboss。但有时,它不会停止这个过程,我们会得到下面粘贴的内容。当发生这种情况时,我们用kill -9. 这可能是应用程序代码中的错误还是可以修复的操作系统级别问题?
waiting for processes to stop/usr/local/jboss/bin/run.sh
waiting for processes to stop/usr/local/jboss/bin/run.sh
waiting for processes to stop/usr/local/jboss/bin/run.sh
/usr/local/jboss/bin/run.sh
Timeout: Shutdown command was sent, but process is still running with PID 7252
[root@mercury02 ~]#
Run Code Online (Sandbox Code Playgroud)
PS:我打开了 /etc/init.d/jboss 文件,正如预期的那样,它kill -15在使用stop.
memory ×2
networking ×2
rhel ×2
shell ×2
bash ×1
cron ×1
filesystems ×1
gnu-screen ×1
jboss ×1
kill ×1
linux-kernel ×1
mysql ×1
ping ×1
process ×1
python ×1
quoting ×1
resolvconf ×1
sed ×1
shell-script ×1
signals ×1
stat ×1
users ×1