bash似乎在抛出segfault,而我的系统非常坏。 我想重新安装bash,而不是重新安装整个操作系统,但这显然是非平凡的。 我不能使用apt-get,因为我的networking连接没有连接(显然是由于bash被打破了…?)所以我订了一个恢复磁盘,并下载了deb文件 – 但我不能做dpkg – 它说: # dpkg -i bash_4.1-2ubuntu3_i386.deb Selecting previously deselected package bash. (Reading database … 22385 files and directories currently installed.) Preparing to replace bash 4.1-2ubuntu3 (using bash_4.1-2ubuntu3_i386.deb) … dpkg: warning: old pre-removal script killed by signal (Segmentation fault) dpkg – trying script from the new package instead … dpkg: error […]
我想按照以下规则安排日志轮换: 日志文件最后2天保持不变 超过2天的日志文件被归档并移动到按date命名的文件夹,它们被创build。 (例如,2012年12月1日的所有日志都将移至20121201并存档。) 超过14天的日志文件将被删除。 我想为此使用logrotate,但是我不确定它是否适合我的需求。 我想要这样的东西,但它不起作用。 /mylog/* { prerotate DIR=$(date +%y%m%d); // actually it's current date mkdir $DIR endscript daily rotate 2 olddir /mylog/$DIR missingok compress postrotate find /mylog -type d -mtime +180 | xargs rm -f endscript } Logrotate不理解$ DIR是可变的。 任何build议,欢迎!
有没有办法在Linux系统上获得正在运行的进程的列表,而不是在每个系统上运行的默认进程(即只有那些在事实之后安装/执行的进程)。 这可以用ps或者其他类似的工具来完成吗? 谢谢
为什么net-snmp在这个OID上没有这个对象在这个OID上可用“后退出0 ,并将错误消息打印到STDOUT而其他错误打印到STDERR并且退出状态1 ? 比较: $ /usr/bin/snmpget -Oqv -v2c -cpublic localhost .1.3.6.1.2.1.2.1.0 2> /dev/null No Such Object available on this agent at this OID $ echo $? 0 但是,错误的社区string或IP地址的处理方式不同(例如“publi”而不是“public”): $ /usr/bin/snmpget -Oqv -v2c -cpubli localhost .1.3.6.1.2.1.2.1.0 2>&1 > /dev/null Timeout: No Response from localhost. $ echo $? 1 这真是让人恼火,因为我试图编写一个function来进行一些理智的检查,以确保某些MIBs / OID确实可以在代理上查询。 我想能够做到这一点(在bash脚本中): snmp_sanity_checks() { … if […]
我使用jboss-as-standalone.sh来pipe理JBoss EAP独立服务。 当我在一个terminal上时,我可以用“service jboss-as-standalone.sh start / stop”来启动/停止服务。 但是我想使用我们的持续部署基础架构,通过SSH从服务器之外启动JBoss。 所以我正在发出一个像这样的命令: ssh root@myserver "service jboss-as-standalone.sh start" 服务器正常启动,但SSH挂起。 看起来无法closures连接,因为在脚本中由此命令派生的后台作业: daemon –user $JBOSS_USER LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=$JBOSS_PIDFILE SERVER_HOME=$SERVER_HOME $JBOSS_SCRIPT -c $JBOSS_CONFIG 2>&1 > $JBOSS_CONSOLE_LOG & 有没有其他的可能性启动JBoss作为一个服务与非SSH的连接,以及? 最好的祝福 一月
所以我想用openssl来encryption/解密一个文件。 我正在通过一个脚本运行它,当我挂载一个USB时,它会自动运行,并解密这个文件。 但是,这并不正确,所以这是我的步骤。 我使用…encryption文本文件 openssl aes-256-cbc -salt -in file.txt -out file.txt.en -pass pass:123 然后,我有一个脚本的USB,这是自动运行时装上。 autorun.sh #!/bin/sh openssl aes-256-cbc -in file.txt.en -out file.txt -d -pass pass:123 现在,它不工作时,USB试图运行它,但是,如果我从控制台运行它使用… ./autorun.sh 它神奇的作品,我很好奇,有什么不同。 我也尝试在交互模式下运行它,并没有解决我的问题。
在我的Red Hat服务器上的/etc/sudoers文件中,我有这样一行: %webdevgroup ALL=NOPASSWD: /bin/chmod * /home/http/* 这显然是一个坏主意,因为有人可以这样做: sudo /bin/chmod 777 /home/http/../../etc/sudoers 有没有一种更安全的方式来实现这个function,而不必打开服务器到这个安全漏洞?
有没有一种方法来确定一个脚本是作为一个工作而不是从用户的shell交互式运行? 我们的一些脚本有一个警卫,通过检查$ TERM来检查它们是否在屏幕上运行。 我试图弄清楚我是否可以智能地检查脚本的执行是如何启动的,这样我就可以更新这个守护语句,或者如果我应该添加一个从at作业运行时总是应该包含的选项。
我试图build立一个简单的社会文件服务器使用TCP发送小文件(〜100KB)。 以下是一个文件的单行服务器和客户端: 服务器: socat -u -d -d OPEN:file.dat TCP-LISTEN:<port>,reuseaddr,fork 客户端: socat -u -d -d TCP:<server>:<port> OPEN:file.dat,creat 第一次数据传输始终有效,但以下情况并不总是有效。 大多数以下传输在客户端上创build一个空文件。 这个问题在多个客户端传输一次后依然存在,我非常希望数据在发生错误时不会被传输,但是日志和返回值并不表示任何错误,只是一个较短的数据循环。 我尝试了几乎所有在这里提到的选项: http : //www.dest-unreach.org/socat/doc/socat.html 我发现让它连续工作的唯一方法是从服务器侦听器中删除fork选项,并将整个commande行包装在一个bash循环中,但是当然对于多个客户端来说它是失败的。 我尝试了Ubuntu,Fedora,Redhat和FreeBSD。 我错过了什么或者这是一个错误?
我需要确定(用bash脚本)Linux操作系统是否从USB启动。 我们可以通过一些命令来找出答案吗?