linux 小技巧

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)扩充文件系统
在这里插入图片描述
在这里插入图片描述

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

16、centos快捷键启动终端Ctrl+Alt+t
17、xhost + 允许别的用户启动的图形程序将图形显示在当前屏幕上
18、如果ubuntu执行脚本时提示source:not found

ls -l /bin/sh结果如果为lrwxrwxrwx 1 root root 4 Jun 19 23:40 /bin/sh -> dash,这说明使用dash来解析脚本

运行:dpkg-reconfigure dash,在界面中选择no,改为bash解析脚本。
再次运行:ls -l /bin/sh
显示:lrwxrwxrwx 1 root root 4 Jun 20 01:04 /bin/sh -> bash

19、创建软连接
ln -s 源文件 目标文件
如ln -s /sdb/pg_wal /root/pg/data/
进入data目录查看
在这里插入图片描述
20、分割合并
cat hgdb-see-4.5.tar.gz.tar.00* >hgdb-see-4.5.tar.gz.tar
tar xf hgdb-see-4.5.tar.gz.tar
tar zxf hgdb-see-4.5.tar.gz

21、xshell ssh连接远程服务器,./执行程序,能弹出界面,但是无法点击?
解决办法:
(1)打开Xconfig
(2)双击Default Profile
(3)选择“设备”–“鼠标设置”
(4)将“同时单击向左按钮和向右按钮”的勾选去掉
(5)点击确定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值