Articles of shell

尝试使用PowerShell有select地删除旧的备份文件

我正在使用数以千计的备份文件,其中许多只是混乱的空间。 我们的员工使用的程序会在每次打开电子表格时创build电子表格的备份以进行编辑。 每个备份都是根据电子表格+date+时间命名的新文件。 我们为每个客户提供一个单独的备份目录,每个目录都有多个电子表格和每个电子表格的多个备份。 最后,我们有一个文件结构充满了这样的文件: Companyx/backup/abssheet_091210_111006.bps Companyx/backup/abssheet_091210_133335.bps Companyx/backup/xyzsheet_091210_145223.bps Companyx/backup/xyzsheet_100803_100332.bps Companyx/backup/xyzsheet_100812_111244.bps Companyy/backup/gnu_sheet_081029_110455.bps Companyy/backup/gnu_sheet_081029_111233.bps Companyy/backup/gnu_sheet_081029_112355.bps 我们只需要保留任何特定工作表的最新2个备份。 在这里列出的8个文件中,我希望保留6.文件名中的date和时间是不重要的,因为我可以使用文件信息中的date和时间。 但文件名不能最终改变。 我曾经用powershell玩过一些,我已经用gci把它们移动到自己的文件位置。 我也可以从文件名中去除date和时间string。 我还发现了一个PowerShell脚本来从一个特定的目录中除去2个最新的文件。 但是我对如何有select地删除我想要的东西感到茫然。 到目前为止,我已经写/修改了下面的代码: $newlist = New-Object System.Collections.Generic.List[System.String] $fulllist = gci . | where {-not $_.PsIsContainer} | sort Name $array = @() foreach ($object in $fulllist) { $string = $object.name $psworiginal = $string.Replace("_"+($string -split "_")[-1]," ") $psworiginal2 = […]

挂起时,启动几个守护进程

我正在运行Debian Squeeze AMD64服务器。 目标运行级别是运行级别2,其中包括rsyslogd,cron,sshd和其他一些东西,但不是dovecot,postfix,apache2等。系统无法达到运行级别2有几个症状: 系统试图启动rsyslogd挂起 启动到运行级别1工作,然后从控制台login工程 从runlevel 1通过/etc/init.d/rsyslog启动rsyslogd挂起 启动运行级别2 rsyslogd禁用的作品 但是,通过控制台login失败:我得到motd,然后什么都没有 从运行级别1开始sshd成功 但是,我不能通过SSHlogin。 有时密码SSHlogin给我的动机,然后什么都没有,有时甚至没有这个。 试图提供一个公共钥匙似乎惹恼了sshd足以不再跟我说话。 当从运行级别1重新启动时,服务器在试图停止apache2(不运行,所以这真的应该是微不足道的)挂起。 在runleve 1login时试图停止apache2也挂起。 而这只是一直失败的东西。 内存已经过testing,dmesg显示没有问题。 我没有任何线索。 更新 :(缩短)在运行级别1中调用的rsyslogd -c4 -d的输出 rsyslogd 4.6.4启动,兼容模式4,模块path“调用者请求对象'net',未find(iRet -3003)请求加载模块'lmnet'加载模块'/user/lib/rsyslog/lmnet.so'模块types2正在加载conf.c请求引用'lmnet',refcount 1 rsylog运行时初始化,版本4.6.4,当前用户1 syslogd.c请求引用'lmnet',现在引用计数2 那么我可以用Strg + C来杀死rsyslogd。 尽pipe如此,/ var / log没有显示任何configuration的日志文件。 Update2 :感谢@DerfK我还没有任何线索,但至less我缩小了这个问题。 我现在正在用/etc/init.d/apache2 stop (当然没有运行apache2)进行testing,这个挂起也是一个更明显的失败。 经过一些testing,我发现一个单行的文件: / usr / sbin / apache2ctl configtest> / dev / null […]

pipe道清漆日志旋转日志的语法

Ubuntu 12.04 Server x64,Varnish 3.0.2 我试图通过Apache的rotatelogs varnishncsa的日志,并从壳运行,事情工作正常: sudo varnishncsa -a -P /var/run/varnishncsa/varnishncsa.pid |/usr/sbin/rotatelogs /var/log/varnish/varnish.log.%Y%m%d%H 3600 在/ var / log / varnish中创build一个新的日志文件,每小时旋转(3600秒)。 不过,我正在努力在/etc/init.d/varnishncsa中以相同的方式运行: PATH=/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/bin/$NAME PIDFILE=/var/run/$NAME/$NAME.pid LOGFILE=/var/log/varnish/varnishncsa.log USER=varnishlog DAEMON_OPTS="-a -P ${PIDFILE}" DAEMON_PIPE="|/usr/sbin/rotatelogs /var/log/varnish/varnish.log.%Y%m%d%H 3600" … start_varnishncsa() { output=$(/bin/tempfile -s.varnish) log_daemon_msg "Starting $DESC" "$NAME" create_pid_directory if start-stop-daemon –start –verbose –pidfile ${PIDFILE} \ –chuid $USER –exec ${DAEMON} — […]

如果tomcat7服务没有响应,重新启动

我在Tomcat服务器上运行一个Web应用程序。 服务器代码中有一个很难察觉的问题,导致它每天崩溃一次或两次。 有空的时候,我会尽力纠正。 但直到那一天,在一个有问题的情况下,重新启动tomcat(/etc/init.d/tomcat7 restart)或基本上重新启动机器也是现在看来相当不错的解决scheme。 我想用wget而不是grep或其他东西来检测服务器的活力,因为即使tomcat正在运行我的服务, wget localhost:8080/MyService/ 输出 –2012-12-04 14:10:20– http://localhost:8080/MyService/ Resolving localhost… 127.0.0.1 Connecting to localhost|127.0.0.1|:8080… connected. HTTP request sent, awaiting response… 200 OK Length: 2777 (2.7K) [text/html] Saving to: “index.html.3” 100%[======================================>] 2,777 –.-K/s in 0s 2012-12-04 14:10:20 (223 MB/s) – “index.html.3” saved [2777/2777] 当我的服务到了。 和输出 Resolving localhost… 127.0.0.1 Connecting to localhost|127.0.0.1|:8080… failed: […]

“su –command”和“su – command-command”有什么区别?

运行# su – oliver –command bash给出一个shell,但是也会打印出警告bash: no job control in this shell ,而Ctrl + Z和fg / bg在那个shell中不起作用。 运行# su – oliver –session-command bash给出一个没有打印警告的shell,而且作业控制确实有效。 使用–session-command的build议来自于使用su启动shell脚本中的结果“在该shell中没有作业控制” ,其中声明“[su的安全修复]改变了-c选项的行为并禁用了作业控制在被调用的shell内“。 但是我还是不太明白这一点。 什么时候应该使用–session-command什么时候应该使用 – –session-command ? – 命令(aka -c )更安全吗? 还是应该总是使用–session-command ,并且 – 为了向后兼容,只剩下–command ? FWIW,我正在使用RHEL 6.4。

使用openssl通过自动运行脚本encryption/解密文件

所以我想用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 它神奇的作品,我很好奇,有什么不同。 我也尝试在交互模式下运行它,并没有解决我的问题。

在Asterisk CLI中configuration命令提示符

我正在尝试在asterisk CLI设置颜色提示。 在文档中我发现这个: %Cn[;n]terminal前景(和可选背景)颜色更改为指定。 完整的颜色列表可以在include / asterisk / term.h中find* 但我无处可以find颜色代码应该是什么格式。 我尝试了所有可能的排列方式,但都没有成功: ASTERISK_PROMPT="%Cn[COLOR_BLUE] %H: " asterisk -vvvvvvr ASTERISK_PROMPT="%Cn[32;128] %H: " asterisk -vvvvvvr ASTERISK_PROMPT="%Cn[32;] %H: " asterisk -vvvvvvr ASTERISK_PROMPT="%Cn[;32] %H: " asterisk -vvvvvvr ASTERISK_PROMPT="%Cn[;COLOR_CYAN] %H: " asterisk -vvvvvvr ASTERISK_PROMPT="%Cn[32|128] %H: " asterisk -vvvvvvr 有人可以告诉我如何使我的星号提示红色,例如? 另外,我还有一个CLI提示问题: 我在Debian Wheezy上使用了Asterisk 11.13。 当我在asterisk CLI ,我可以使用命令历史和“readline-like”的function,例如CTRL + r来search。 但并不是所有function都可用。 例如,“向上翻页”和“向下翻页”search历史的备用映射不起作用。 他们在一切工作(bash,mysql,..) $ […]

在bash中读取时跳过一个variables

我正在使用一个文件读取一些variables while read abc; do (something) done < filename 是否有一个优雅的方式来跳过一个variables(读取一个空值),即如果我想a = 1 b = c = 3,我应该在文件中写什么? 现在我正在放 1 "" 3 然后使用 b = $(echo $ b | tr -d \“) 但这是相当繁琐的,恕我直言 有任何想法吗?

每分钟测量一次“加载时间(毫秒)”

我有一个运行在虚拟服务器上的apache,即使在检索静态的JPG或PNG文件的时候,效果也很糟糕。 这只会偶尔发生一次,所以我很难将其logging到托pipe公司。 有没有一个好的工具,可以轻松地存储每分钟一个Web服务器上的文件“加载时间毫秒”? 也许甚至一个shell脚本一行,我可以运行在“屏幕”会议?

如何将chkconfig结果输出到shell脚本中的文件?

当我从linux命令行运行以下命令时,它可以正常工作,并正确地填充chkconfig.bak文件: #chkconfig –list > chkconfig.bak 但是,从日常的shell脚本运行该命令时,chkconfig.bak文件是空的。 任何猜测为什么会发生这种情况?