Articles of shell

检查进程是否正在运行linux shell不能正常工作

我有一个java进程,需要始终运行。 我在cron程序中写了下面的shell来检查java进程: if [ `ps aux | grep testjava | grep -v grep | wc -l` -ne 1 ];then cd /root/folder sh mytest.sh >test.log 2>test-err.log & echo "mytest not running and restarted on "`date` >> /root/check-test.log 其中mytest.sh包含必须运行的java类。 当我分别执行shell文件时,它执行得很好。 但是当我执行上面的cron时,它给了我以下例外: Exception in thread "main" java.lang.NoClassDefFoundError: mytest/mytestprog Caused by: java.lang.ClassNotFoundException: mytest.mytestprog at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at […]

解释这个shell脚本

Autoconf文档推荐这个片段的可移植性: # Create a temporary directory $tmp in $TMPDIR (default /tmp). # Use mktemp if possible; otherwise fall back on mkdir, # with $RANDOM to make collisions less likely. : ${TMPDIR=/tmp} { tmp=` (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null ` && test -n "$tmp" && test -d "$tmp" } || { tmp=$TMPDIR/foo$$-$RANDOM (umask 077 […]

Shell脚本通配符扩展问题

以下是我的shell脚本,我尝试将当前目录中的所有文件复制到另一台有权复制的机器上。 #!/usr/bin/expect -f spawn scp -pr "*" root@192.168.1.2:/home/user1/. expect { -re ".*sword.*" { exp_send "user1user1\r" } } interact 而且,在尝试运行此脚本时收到以下错误。 通配符*没有按预期工作。 spawn scp -pr * root@192.168.1.2:/home/user1/. root@192.168.1.2's password: *: No such file or directory Killed by signal 1.

适用于Solaris,Linux和HPUX的sed命令

我需要改变一个configuration文件中的指令,并在Linux中工作,但在Solaris中,它说命令乱码。 这是指令 enable-cache passwd yes 我需要简单地将“是”更改为“否”。 我该如何处理适用于Solaris,HPUX和Linux的sed? 这是在Linux中工作的sed命令。 Solaris不喜欢-r sed -r 's/^([[:space:]]*check-files[[:space:]]+passwd[[:space:]]+)yes([[:space:]]*)$/\1no\2/' inputfile 最终目标是将此命令放在脚本中并在整个企业中运行。 谢谢 格雷格 我昨天还发布了一些类似Linux的东西,但不是其他的东西。

如何查找特定文件在给定时间范围内被修改的次数

如何find特定文件在给定的时间范围内被修改的次数,即在Unix客户端的最近2天内?

Shell脚本计数string发生

我正在从事一个项目,需要帮助弄清楚如何完成一项任务。 我将得到一个日志文件,我需要parsing并计算某一分钟发生的次数。 例如,如果我有一个txt文件: Line 3: 0606 221241 successfully copied to ** Line 5: 0606 221242 successfully copied to ** Line 7: 0606 221242 successfully copied to ** Line 9: 0606 221342 successfully copied to ** 我想知道多less次在2212成功复制到目前为止,我有以下代码分离行已成功复制,并获取date分开… grep "successfully copied to" Text.log >> Success.txt awk '{print ($1, $2)}' Success.txt > datesAndTimes.txt 这给了我 0606 221241 0606 221242 […]

列表或Linux中所有打开的gnometerminal的名称

我在Oracle Linux上。 我有一个shell脚本,执行以下操作: #some stuff happening here gnome-terminal –title='my application' -x /path/my_application -param val #some more stuff 现在,这个脚本很可能会被执行多次。 但是,我只希望my_application在它尚未运行的情况下启动。 我发现下面的代码是这样的: ps cax | grep my_application > /dev/null if [ $? -eq 0 ]; then echo "My application already running." else gnome-terminal –title='my application' -x /path/my_application -param val fi 这工作正常。 这是我遇到问题的地方 我有第二个shell脚本。 它也运行my_application ,但具有不同的参数。 这两个脚本可能一起执行。 如果发生这种情况,则必须运行两个my_application实例,因为它们具有不同的参数。 […]

如何在awk命令中插入shellvariables

我试图写一个脚本,在这个脚本中,我将一个shellvariables传递给一个awk命令,但是当我运行它时什么也没有发生,我试图只在shell中运行该行,我发现没有发生variables扩展像我预料的 代码如下: 1 #!/bin/bash 2 3 # Created By Rafael Adel 4 5 # This script is to start dwm with customizations needed 6 7 8 while true;do 9 datestr=`date +"%r %d/%m/%Y"` 10 batterystr=`acpi | grep -oP "([a-zA-Z]*), ([0-9]*)%"` 11 batterystate=`echo $batterystr | grep -oP "[a-zA-Z]*"` 12 batterypercent=`echo $batterystr | grep -oP "[0-9]*"` 13 14 […]

将mpg123中播放的当前歌曲的名称写入文件

我正在编写一个脚本,将在HD44780显示器上显示在我的树莓上播放的当前歌曲。 除了我需要显示当前正在播放的歌曲的名字的部分,我得到了所有的工作。 mpg123 -Z /mnt/usbflash/mp3/* > /tmp/ramdisk/mpg123.output & 上面的命令将播放歌曲就好了,但它不会写入文本文件的轨道信息..任何想法什么是最好的方式来编写脚本?

|之间的区别 和>运营商

pipe道(|)和输出(>)redirect操作符有什么区别? 我可以在哪里使用它们? 例如: 我通常只使用grep使用pipe道(|) find . | grep abc 而唯一使用input输出redirect的方法是使用不同的input输出来testing我的程序 例如: abc.exe < in.txt > out.txt 为什么我不能做这样的事情: xyz.exe | out.txt