linux 小技巧

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ziptop/article/details/80055674

1、批量修改文件后缀

rename .out .exp *.out   --所有.out均修改为.exp

2、判断是否输入参数,若未输入

if [ -z "$1" ];then
	echo "Please input IP , for example 'test.sh master-vip'!"
	exit 1
fi

3、批量去除行尾^M

sed -i 's/\r$//g' *

4、捕获ctrl+c

trap "echo -e \"\nCTRL+C exit !\n\";exit" INT

5、Linux SSH 远程登录后显示-bash-4.2$

可能的原因:
(1)没有给用户创建/home/username主目录
(2)用户没有/home/username主目录的读取权限
(3)主目录/home/username下面缺少shell环境

针对第3种解决办法:
cp /etc/skel/.bash* /home/xu
chown xu:xu /home/xu/.bash*

6、linux history命令带有时间

 export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S 

7、批量替换字符串

sed -i "s/archivedir/sharedisk\/archivedir/g" */*
将当前目录下所有目录中的文件中的archivedir替换为sharedisk/archivedir
转义字符
sed -i "s#8888#\$PGPORT#g" *

8、shell除法
表达式和符号之间需要有空格


#!/bin/bash
export PGHOME=/home/highgo/hgdb/bin
export PGDATA=$PGHOME/data
export LD_LIBRARY_PATH=$PGHOME/lib
export PATH=$PGHOME/bin:$PATH
i=0
sum=0
avg=0
sql="
SELECT
        CASE
                WHEN pg_last_xlog_receive_location() = pg_last_xlog_replay_location() THEN 0
                ELSE EXTRACT (EPOCH FROM now() - pg_last_xact_replay_timestamp())
        END
AS replication_lag;"
while [ $i -lt 10 ]
do
        #echo -e `psql -t -A -c "$sql" -d highgo` 
        var=`psql -t -A -c "$sql" -d highgo`
        #echo $var
        sum=$(expr $sum + $var)
        let i=$i+1
done
echo -e 'sum:'$sum
avg=$(expr $sum / $i)
echo -e 'avg:'$avg

9、查看某条命令结果变化

watch -n 60 -d -t pg_controldata
每1min查看一次命令,-d代表高亮显示变化,-t代表不显示最上方的时间

10、shell循环执行某条命令3分钟

#!/bin/bash

begin=`date +%s`
while true
do
end=`date +%s`
echo $begin
echo $end
diff=`echo "($end-$begin)"|bc`
echo $diff
if [ "$diff" -lt "180" ] ;then
echo 'a\n'
else
break
fi
done

11.查看存在默认字符串的所有文件名及行号

grep -rn "low" *

Shell脚本,简单function,执行
#!/bin/bash

function exesql {
a=“psql -c ‘$1’”
echo $a
}
exesql “select * from tb2”

结果打印出来的结果是
psql -c ‘select aa.sh from tb2’

解决办法:

echo "$a"才行,即如下:
#!/bin/bash
function exesql {
a="psql -c '$1'"
echo "$a"
}
exesql "select * from tb2"

返回结果为:


[postgres@localhost xu]$ sh aa.sh 
psql -c 'select * from tb2'

原因:


echo $a也就是 echo select * from tb2,而*代表当前目录下的所有文件。
另,echo '$a'直接显示成$a
若a的值为执行结果的话,则脚本如下即可:

#!/bin/bash
function exesql {
a=`psql -c "$1"`
echo "$a"
}
exesql "select * from tb2"

返回结果为:
[postgres@localhost xu]$ sh aa.sh 
 i |  t  
---+-----
 1 | aaa
 2 | vvv
(2 rows)

12、top只显示postgres相关的进程

top c -p `pidof postgres| sed 's/ /,/g'`

13、中标麒麟系统删除过期提示

chmod 600 /usr/libexec/sysnotify
pkill -9 sysnotify

14、linux快捷方式文件存放地址

 /root/.local/share/applications
 
 桌面快捷方式文件放置于/usr/share/applications或者~/.local/share/applications处。前一个目录存储的桌面快捷方式每个用户都可以使用,而后一个目录则含有仅仅为特定用户创建的快捷方式。

15、扩容根目录
(1)扩容前

在这里插入图片描述
(2)fdisk /dev/sda
依次输入p、n、p、3
最后w保存更改

(3)执行命令partx -a /dev/sda # 刷新内核,可能需要执行多次,直到所有分区均完成加载,如下图所示,第一次只加载了3个分区,第二次全部加载完成,加载的数量要和上图中查询出的数量一致。
在这里插入图片描述
(4)扩充文件系统
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ziptop/article/details/80055674
今日推荐