Articles of unix

为什么我的awk子命令失败?

当我跑步 df -hl | grep '/dev/disk1' | awk '{sub(/%/, \"\");print $5}' 我收到以下错误: awk: syntax error at source line 1 context is {sub(/%/, >>> \ <<< "\");} awk: illegal statement at source line 1 我似乎无法在awk sub上find任何文档。 df -hl | grep '/dev/disk1' 回报 /dev/disk1 112Gi 94Gi 18Gi 85% 24672655 4649071 84% / 据我所知,它应该返回使用的磁盘空间的百分比。

父bash脚本没有收到“陷阱”,尽pipe进程仍在运行

我实际上想要实现的是: 我试图让一个自定义的守护进程在使用SysVinit的系统上工作。 我已经有引导程序/etc/init.d/xyz脚本,它调用我的守护进程,但它不会自动将它放在后台。 这类似于nginx这样的服务:二进制背景本身 – 也就是说,不是/etc/init.d/nginx脚本负责守护进程,所以如果直接运行/opt/nginx/sbin/nginx也会遇到守护进程/后台执行。 问题 我的问题是,使用我当前的方法,该守护进程不会终止与父进程(这是什么被终止时,你叫service xyz stop )。 我正在使用运行daemon.sh &脚本的父launcher.sh脚本。 然而,当我杀死launcher.sh , daemon.sh继续运行,尽pipe我尽了最大的努力与trap (它从来没有被称为): – > launcher.sh #!/bin/bash function shutdown { # Get our process group id PGID=$(ps -o pgid= $$ | grep -o [0-9]*) echo THIS NEVER GETS CALLED! # Kill process group in a new process group setsid kill — […]

很多身份validation失败的用户login失败

我最近注意到,我的服务器在mail.log上报告了很多认识用户的不好身份validation,而且它不是暴力攻击。 我真的不知道这种authentication的原因。 我有用户使用,在iOS的Gmail应用程序,邮件,在MacOSX的邮件应用程序,ThunderBird和Outlook,还有一个webmail服务来访问此服务器。 在这台服务器上,我有一个自签名证书,也作为一个邮件智能主机。 这个系统是一个MacOSX 10.9.5。 在所有的平台上,Outlook是连接到服务器时唯一有奇怪行为的人。 不断地显示一个令人讨厌的loginpopup用户的凭据,无处不在,这发生在我所有的Outlook用户。 用户可以使用Outlook来发送和接收,而且似乎都可以工作,除了loginpopup窗口。 从我的mail.log我有这个问题与SAL DIGEST-MD5,SASL PLAIN和SASL CRAM-MD5,例如一些随机样本: Jan 19 11:43:43 remote.x.pt postfix/smtpd[53889]: error: validate response: authentication failed for user=lcg (method=DIGEST-MD5) Jan 19 11:43:43 remote.x.pt postfix/smtpd[53889]: warning: unknown[192.168.1.72]: SASL DIGEST-MD5 authentication failed Jan 18 17:10:46 remote.x.pt postfix/smtpd[5838]: error: verify password: authentication failed: [email protected] Jan 18 17:10:46 remote.x.pt postfix/smtpd[5838]: warning: hq2.pacsis.pt[x]: […]

部署用户是否应将其shell设置为/ bin / false?

我通过在自己的UNIX用户帐户下对每个应用程序进行“沙盒”来部署Web应用程序,这些应用程序位于也提供静态文件的通用nginx反向代理之后。 每个帐户都运行应用程序服务器,nginx将通过fcgi转发请求。 每个用户的主文件夹都包含应用程序代码和静态文件,这些文件当然需要由nginx读取。 我试图尽可能地保证这个设置,并且在阅读这个主题时看到/bin/false 。 如果我将应用程序用户的shell设置为/bin/false ,那么在安全性方面我会获得什么?

按时间顺序合并大文件(UNIX)

我们正在使用syslog-ng将文件转储到networking存储位置。 每天有5个.log文件是由不同的服务器写的,在一天结束时,我需要按时间顺序合并5个文件,然后压缩它们。 在过去的2年中,我使用了logmerge ,它的运行效果很好。 确切的语法是: /local/bin/logmerge -f /mnt/logs/Windows/`date -d yesterday +\%Y-\%m-\%d`-sys*.log | gzip -9 -c > /mnt/logs/Windows/`date -d yesterday +\%Y-\%m-\%d`.log.gz && rm -f /mnt/logs/Windows/`date -d yesterday +\%Y-\%m-\%d`-sys*.log 在过去的几个星期里,这个过程由于.log文件有多大而破裂了。 现在每个人都超过7 GB,logmerge进程在sorting这么多行时失败了。 现在我只是把它们拼凑起来,但是由于日志不正确,search变得更加困难。 有没有更好的方法来合并这些文件并将其压缩?

阻止在iptables上运行Docker容器的Postgres端口5432

我正在使用Ubuntu 14.04桌面(准确的说是Xubuntu),并试图用iptables阻止外部对本地运行的Postgres端口5432的访问。 这是我的iptables -S -A INPUT -i lo -p tcp -m tcp –dport 5432 -j ACCEPT -A INPUT -p tcp -m tcp –dport 5432 -j DROP 和iptables -L : Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp — anywhere anywhere tcp dpt:postgresql DROP tcp — anywhere anywhere tcp dpt:postgresql 但不知何故,我的Android上的networking扫描仪应用程序,连接到相同的WiFi,仍然可以看到它。 我可以在Android上通过一个PSQL实用程序对其进行进一步testing,而且我可以看到所有的表格。 我错过了什么? […]

传递参数从本地到Sudo用户

好吧,如果主题不清楚,我会解释我的疑问。我有一个shell脚本保存在我的本地用户(executeAdM.sh),当我执行这个脚本我连接到SUDO用户通过从指令file.But命令我执行这个脚本我也传递参数到这个脚本实际上是SUDO用户的一些目录path。 请参阅下面的脚本 – : 本地脚本(executeADM.sh) – : #!/bin/bash echo password | sudo -S -l sudo /usr/bin/su – user <<\EOF #ls -lrt pwd for entry in $(ls -r) do if [ "$entry" = "testingADM.sh" ];then ./$entry $1 fi done EOF 以上执行 – ./executeADM.sh somePath 当上面的脚本执行它成功地连接到另一个用户,并在SUDO用户我执行一个for循环search另一个SCRIPT称为testingADM.sh。 一旦脚本被发现我执行该脚本与parameter passing从本地用户和testingADM.sh应该为我设置的path不工作它不读取从本地用户传递的参数。可以帮助我在这里我没有得到如何解决这个问题 请问我是否有什么不清楚基本上我想从LOCAL shell脚本传递参数到SUDO USERshell脚本 – : SUDO用户脚本(testingADM.sh) – : #!/bin/bash […]

使用一个负载平衡器负载平衡多个站点

我想知道是否有可能从一个负载平衡器运行HAproxy(或磅或清漆或一些其他* nix为基础的平衡器)负载平衡两个站点。 我们有dev.site.com负载平衡到dev1.site.com和dev2.site.com和qae.site.com负载平衡到qae1.site.com和qae2.site.com,这将是很好,如果我们只有一台机器处理这两个非生产站点的负载平衡。 我一直在使用我们从主机获得的ZXTM平衡器,并且总是昂贵的,它不会在每台物理机器上平衡多个站点。 这是一个实际的限制,因为试图平衡端口80? 我认为ala apache的虚拟主机:80设置会有一个解决方法,但是再次,我不太熟悉networking。 谢谢!

Tar命令Solaris版本用于大于2 GB的文件

我们使用tar命令UNIX版本(SunOS 5.5,最后一次更改:1995!)有几个大于2GB的文件。 有“E”标志的tar文件> 2GB。 这是如何完成的: rsh sun_server tar cvEf – abc/file1 abc/file2 | rsh archive_server archive_cmd 请注意,archive_server也是一个UNIX服务器,并使用相同版本的tar命令。 在检索中,我们这样做: cd /destination_path/ rsh archive_server retrieve_cmd | tar xvf – 发生了什么事是文件被提取到/ abc /(在父目录); 不在/ destination_path / abc / 奇怪的是我们把检索方法改成了gtar: cd /destination_path/ rsh archive_server retrieve_cmd | gtar xvf – 对于大于2GB的文件,最后会出现很多“错误标题”和“内存耗尽”错误。 但是,对于小于2GB的文件,它们通常被解压到 / destination_path / abc / ! 我们需要将> 2GB的文件解压到/ […]

预期脚本不会在远程服务器上打印(cat)文件

我有一个期望的脚本,检查远程服务器上是否存在文件,然后尝试打印(使用猫),如果它 期望脚本由于某种原因而忽略这些命令。 send "if {[file exists "./abc.test"]} {cat ./abc.txt\r}"