Articles of linux

我怎么脚本mkfs问“是整个设备,而不是一个分区! 仍要继续?”

我正在尝试创build一个格式化Amazon EC2 EBS卷的脚本,所以我可以安装它。 从命令行看起来像这样: > mkfs -q -t ext4 /dev/sdf /dev/sdf is entire device, not just one partition! Proceed anyway? (y,n) (该命令是正确的;不需要为我的目的创build一个分区表) 我的问题:因为这个命令应该是在一个自动化的脚本中运行,我不能在terminal上有这个问题; 没有人会回答,脚本将挂起。 我如何避免这种情况? 我试过了: > echo y | mkfs -q -t ext4 /dev/sdf 但这并不能解决问题。 -q选项也没有区别。

监视打开的文件限制等

我们最近在一些服务上已经达到了最大打开文件的限制。 还有一些其他的限制。 有没有一种方法可以监控进程如何接近这些限制,以便在出现限制或修复根本原因时能够收到警报? 在同样的说明中,是否可以查看这些事件的日志,以便我们知道何时发生崩溃是因为碰到了这些限制之一?

了解ulimit -u

我想了解这里发生了什么。 linvx$ ( ulimit -u 123; /bin/echo nst ) nst linvx$ ( ulimit -u 122; /bin/echo nst ) -bash: fork: Resource temporarily unavailable Terminated linvx$ ( ulimit -u 123; /bin/echo one; /bin/echo two; /bin/echo three ) one two three linvx$ ( ulimit -u 123; /bin/echo one & /bin/echo two & /bin/echo three ) -bash: fork: […]

如何保持多台服务器同步文件?

目前,我正在pipe理一组PHP-FPM服务器,所有这些服务器往往会彼此不同步。 我在应用程序服务器(Magento)之上使用的应用程序允许pipe理员修改系统上的各种文件,但是现在该站点处于群集设置中,修改文件只修改它在单个实例上(在一个应用程序服务器)的集群中的各种机器。 有没有Linux的开源应用程序可以让我保持所有这些服务器同步? 我创build一个小型VM实例,可以监听机器的变化来同步。 从理论上讲,完美的应用程序可以让每台机器上运行的小型客户机进行同步,并与主服务器进行通信,从而决定每台机器如何/同步哪些内容。 我已经研究过运行集中式文件服务器的可能性,但不幸的是我的应用程序服务器分布在EC2和物理机之间,这使得这是不可行的。 由于有多个应用程序服务器(其中一些是根据网站的负载dynamic创build的),简单地设置一个rsync cron作业效率不高,因为cron作业将不得不在每台计算机上进行修改,以便将文件发送到每个其他服务器机器在群集中,这只是一大堆不必要的数据传输/ ssh连接。

为所有用户设置umask

我试图把默认的umask设置为002,包括我的CentOS盒子上的所有用户。 根据这个和其他的答案,这可以通过编辑/etc/profile来实现。 然而,该文件顶部的评论说: 除非你知道你在做什么,否则改变这个文件并不是一个好主意。 最好在/etc/profile.d/中创build一个custom.shshell脚本,以便对环境进行自定义更改,因为这样可以防止在将来的更新中进行合并。 所以我继续创build以下文件: /etc/profile.d/myapp.sh 用单行: umask 002 现在,当我创build一个以root身份login的文件时,这个文件诞生了664个权限,这是我所希望的。 但是由我的Apache mod_wsgi应用程序创build的文件,或使用sudo创build的文件仍然默认为644权限… $ touch newfile (作为root): 结果= 664 (作品) $ sudo touch newfile : 结果= 644 (不起作用) 由Apache mod_wsgi应用程序创build的文件: 结果= 644 (不起作用) 由Python的RotatingFileHandler创build的文件: 结果= 644 (不起作用) 为什么会发生这种情况,以及如何确保664文件系统的权限,无论创build文件是什么?

如何在不依赖任何第三方网站或服务的情况下使用内置的系统命令find我的公共IP地址?

是否有任何内置的系统命令,如ping,让我发现我的公共IP地址在Windows或Linux操作系统? 这不应该依赖任何第三方网站或服务。

我怎样才能做一个辅助网卡端口“eth0”?

我正在使用CentOS 5.9 。 我的一台服务器最近有一个故障的网卡端口。 运行在服务器上的软件被硬编码为使用eth0 。 其他的物理网卡端口很好,没有使用。 现在这个问题已经解决了,但我很好奇,说服CentOS另一个NIC端口是eth0有多难呢? 只是编辑/etc/sysconfig/network-scripts/ifcfg-eth0和设置HWADDR=<MAC Address of second NIC port> ?

如何设置哪个IP用于HTTP请求?

这可能是一个愚蠢的问题。 我正在使用命令行中的wget做一些http请求,我希望这些连接是通过我的服务器拥有的4个IP的一个特定的IP来完成的。 这些http请求到达一个特定的IP地址范围,所以我只希望那些路由不同。 我的服务器中的4个接口是eth0 , eth0:0 , eth0:1 , eth0:2 。 我试着用下面的命令: route add -net 192.164.10.0/24 dev eth0:0 但是当我看到路由表时说: Destination Gateway Genmask Flags MSS Window irtt Iface 192.164.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 接口被设置为eth0而不是eth0:0正如我的命令所述。 我究竟做错了什么?

crontab – 设备上没有剩余空间

crontab -e /tmp/crontab.KxTGwK: No space left on device 和 df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 955486988 157545404 749405676 18% / tmpfs 37042680 0 37042680 0% /dev/shm /dev/sda1 253871 89090 151674 38% /boot /usr/tmpDSK 4128448 338068 3580668 9% /tmp 但是我用df -i得到这个 df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 60669952 3809723 […]

“永远不要采取内核更新” ​​- 任何事实?

所以我今天和同事讨论了一下,他让我觉得很奇怪,因为我准备将安全更新应用到我们的一台生产服务器上。 “你不应该应用内核更新。” 他的理由是,你不知道是否会打破任何链接的模块,这可能会导致应用程序碎片。 我会买这个,如果可能无论你正在运行需要你build立自定义的内核模块 – 但对于你的标准应用程序这真的是一个问题? FWIW有问题的盒子运行一个Apache web服务器和一个数据库。 我认为定期应用安全更新对于防范漏洞是必要的,而且他认定的风险超过了在生产环境中使用最新内核的好处。