linux使用记录笔记

记录linux日常使用过程中的一些使用方式、记录,比较少用的、少见的一些问题及解决方法。

平时使用linux遇到的比较少见的问题及解决方法,便于后期再次遇到。

Shell命令

删除特殊字符的目录、文件

程序开发中经常使用配置文件,然后在程序中引用使用,但是如果配置参数没有定义,则程序不能正确替换,就会生成一些特殊字符的目录、文件,例如: ${app.conf.name} 文件名的文件,使用rm -rf {app.conf.name} 删不掉。需要使用转义字符删除。

1
[lehoon@lehoon ~]$ rm -rf \$\{app.conf.name\}/

计算数组大小

1
2
3
4
5
6
7
8
OLD_IFS="$IFS"
IFS=" "
#query nginx program is exits
nginx_pid=$(ps -fe | grep ./nginx | grep -v grep | awk '{print $2}')
nginx_pid_array=($nginx_pid)
nginx_pid_len=${#nginx_pid_array[@]}
echo nginx进程已经启动成功,进程数为 $nginx_pid_len
IFS="$OLD_IFS"

判断tomcat是否启动成功

通过查进程检查tomcat是否启动成功,通过curl查询应用的http状态码判断应用是否启动成功。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ps -u lehoon | grep -E "java"
if [ $? != 0 ]
then
su - lehoon -c "sh $tomcat_home/bin/startup.sh"
sleep 30
tomcat_status=`curl -I -s -w "%{http_code}" -o /dev/null http://192.168.1.178:8080/systemName`
if [ $tomcat_status -eq 200 ] ;then
echo "tomcat,应用启动成功"
else
echo "tomcat,应用启动失败"
fi;
else
echo "tomcat程序已存在"
exit 1
fi

no version information available

执行命令提示free: /opt/SoftwareAG/Apama_5.3/lib/libz.so.1: no version information available (required by /lib64/libdw.so.1)
需要把环境变量lib增加

1
export LD_LIBRARY_PATH=/usr/lib64:/usr/lib:/lib:/lib64:$LD_LIBRARY_PATH

普通用户新建crontab任务

一般使用root创建定时任务,普通用户创建后保存失败。
解决方法:使用root创建定时任务,增加指定用户。

1
[root@lehoon-server001 ~]# crontab -u lehoon -e

编辑完保存,然后切换到lehoon用户,使用crontab -l查看创建的定时任务。

vi修改文件格式

日常使用window上传到linux下的shell文件中有回车换行符,在linux下会显示^M导致shell解析错误。
使用vi打开文件,然后通过:set ff?查看文件编码格式,在通过:set ff=unix或者:set ff=doc修改格式。

检查文件组和用户

在linux下使用crontab+shell脚本定时检查文件夹属性group、user是否是指定用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh
path=/var/lib/php/session
group_name=$(stat -c%G ${path})
user_name=$(stat -c%U ${path})

datetime=`date +%Y-%m-%d-%H-%M-%S`
#echo ${datetime}

if [ "$group_name"www != "nginx"www ]; then
chown -R nginx:nginx /var/lib/php/session
echo "[${datetime}] group_name is not nginx" >>/data/yunwei/yunwei.log
else
echo "[${datetime}] group_name is nginx" >>/data/yunwei/yunwei.log
fi

if [ "$user_name"www != "nginxwww" ]; then
chown -R nginx:nginx /var/lib/php/session
echo "[${datetime}] user_name is not nginx" >>/data/yunwei/yunwei.log
else
echo "[${datetime}] user_name is nginx" >>/data/yunwei/yunwei.log
fi

文章目录
  1. 1. Shell命令
    1. 1.1. 删除特殊字符的目录、文件
    2. 1.2. 计算数组大小
    3. 1.3. 判断tomcat是否启动成功
    4. 1.4. no version information available
    5. 1.5. 普通用户新建crontab任务
    6. 1.6. vi修改文件格式
    7. 1.7. 检查文件组和用户