linux常用自定义命令

246 阅读1分钟

ccp

用法:ccp

作用:强制复制文件或目录

实现:

 cp -rf $@

kkm

用法:kkm

作用:清理缓存

实现:

 sync;
 echo 1 > /proc/sys/vm/drop_caches;
 sync;
 echo 2 > /proc/sys/vm/drop_caches;
 sync;
 echo 3 > /proc/sys/vm/drop_caches;
 ​
 free -m

rrm

用法:rrm <文件或目录>

作用:强制删除文件或目录

实现:

 rm -rf $@

sp

用法:sp

作用:查看当前目录下所有文件和文件夹的大小

实现:

 du -sh *

ttail

用法:ttail <文件路径>

作用:tail命令查看文件的最后200行

实现:

 tail -200f $@

untar

用法:untar <压缩文件路径>

作用:解压所有类型的压缩文件

实现:

 FILE_NAME=$1
 ​
 if [ "${FILE_NAME##*.}"x = "gz"x ];
 then
     tar -zxvf $@
         return 0
 fi
 ​
 if [ "${FILE_NAME##*.}"x = "tar"x ];
 then
     tar -xvf $@
         return 0
 fi
 ​
 if [ "${FILE_NAME##*.}"x = "zip"x ];
 then
     unzip $@
         return 0
 fi
 ​
 if [ "${FILE_NAME##*.}"x = "rar"x ];
 then
     tar -zxvf $@
         return 0
 fi
 ​
 if [ "${FILE_NAME##*.}"x = "bz2"x ];
 then
     bzip2 -d $@
         return 0
 fi
 ​
 if [ "${FILE_NAME##*.}"x = "xz"x ];
 then
     xz -d $@
         echo "untar used xz to uncompress the specified file. Now you must uncompress using tar -xvf by yourself!"
         return 1
 fi
 ​
 tar -zxvf $@

ujs

用法:ujs <搜索词>

作用:搜索当前用户的java进程

实现:

 ps -u `whoami` -f | grep -v grep | grep java | grep $1

uj

用法:uj

作用:查看当前用户的java进程

实现:

 ps -u `whoami` -f | grep -v grep | grep java

jjstack

用法:jjstack [StackName] [SleepTime]

作用:每隔一段时间取java进程的堆栈信息。StackName为最终的堆栈信息文件名的前缀,SleepTime为间隔时间(单位为秒)

实现:

 if [ $# -lt 1 ]; then
     echo "Usage: $0 <PID> [StackName] [SleepTime]"
     echo "Get java jstack info of process:<PID> every [SleepTime] seconds."
     echo "The result file name looks like [StackName]_yyyyMMddHHmmss.jstack."
     echo "The default StackName is stack, default SleepTime is 10 seconds"
 fi
 ​
 pid=$1
 stack_name="jstack"
 if [ $# -gt 1 ]; then
     stack_name=$2
 fi
 sleep_time=10
 if [ $# -gt 2 ]; then
     sleep_time=$3
 fi
 ​
 while true
 do
     time=`/bin/date +'%Y%m%d%H%M%S'`
     stack_file_name="${stack_name}_${time}.stack"
     jstack -l $pid > ${stack_file_name}
     echo "jstack to: [${stack_file_name}] successful..."
     sleep ${sleep_time}
 done

jkill

用法:jkill

作用:kill掉当前用户的所有java进程

实现:

 current_user=`whoami`
 ps -u ${current_user} -f | grep java | grep -v grep | awk '{print $2}' | xargs -r kill -9

loop

用法:loop

作用:循环执行shell命令,SleepTime为间隔时间,注意输入的命令不支持alias

实现:

 if [ $# -eq 0 ];
 then
     echo "Usage: loop <SLLEP_TIME>"
     echo "loop execute command every <SLLEP_TIME> seconds"
     exit 1
 fi
 ​
 RESET="\033[0m";
 GREEN="\033[32m";
 RED="\033[31m";
 YELLOW="\033[33m";
 ​
 # 分隔符
 str="-"
 # 获取屏幕宽度
 ScreenLen=$(stty size |awk '{print $2}')
 ​
 function echo_line()
 {
     yes ${str} |sed ''''${ScreenLen}'''q' |tr -d "\n" && echo
     echo "-----> DATETIME: $(/bin/date +'%Y-%m-%d %H:%M:%S')"
 }
 ​
 SLEEP_TIME=$1
 echo -e "${GREEN}Please input loop command:${RESET}";
 echo -e "${YELLOW}Note: alias is not supported! ${RESET}";
 read input;
 echo "-----> loop command:${input}"
 while true
 do
     echo_line
     result=$("${input}")
     echo -e "${result}"
     sleep ${SLEEP_TIME}
 done