8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
运行脚本失败,回车换行符问题
如下报错信息:1-bash: ./start.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
查看文件是否有^M换行符存在1
2
3
4
5cat -v start.sh
或者
vi -b start.sh
或者
vi start.sh 后输入命令: :e ++ff=unix start.sh
可以看到整个文件的换行都有^M符号
解决方法使用vi打开脚本文件,输入下面命令1:set ff=unix
使用cat tr命令,注意,这里的^M是Ctrl+V,Ctrl+M输入的1cat start.sh | tr -d "^M" > new_start.sh
使用sed命令替换1sed 's/^M//g' start.sh >new_start.sh
使用vi打开文件,输入下面命令,或者直接使用vi -b 文件名的方式打开文件1:e ++ff=unix start.sh // 以unix格式打开文件
然后执行替换命令,这里的^M也是通过Ctrl+V,Ctrl+M输入的1:%s/^M//g
查看命令可以输入下面指令1
2
3:h ++
:h ff
:h ffs
查找某个文本文件中指定内容数据
比如说日志文件中有userId=1234,date=2018-10-11,我们想获取到所有userId的值,保存到指定文件里面,可以使用下面的命令1cat xxx.log | grep "xxxxxxx" | awk 'BEGIN{FS="userId="} {print $2}' | awk 'BEGIN{FS=",date="} {print $1}' > temp.txt
查找文件内容,返回查找到的内容之前,之后的多少行数据1grep -A 5 -B 5 "userId=6789" xxx.log
查看进程中的线程数1
2
3
4ps -mp [进程ID] | wc -l
ps -Lf [进程ID] | wc -l
ps -T -p [进程ID] | wc -l
top -Hp [进程ID]
查看进程中线程执行了多长时间1ps -mp [进程ID] -o THREAD,tid,time
centos开放端口的方法
centos开放端口方法
1.查看firewalld有没有安装1ps -ef|grep firewalld
2.没有安装安装上1yum install firewalld firewall-config
3.运行、停止、禁用firewalld
启动1systemctl start firewalld
查看状态1systemctl status firewalld 或者 firewall-cmd --state
停止1systemctl disable firewalld
禁用1systemctl stop firewalld
4.查看版本1firewall-cmd --version
查看帮助1firewall-cmd --help
5.显示状态1firewall-cmd --state
查看区域信息1firewall-cmd --get-active-zones
查看指定接口所属区域1firewall-cmd --get-zone-of-interface=eth0
6.查看所有打开的端口1firewall-cmd --zone=public --list-ports
7.加入一个端口到区域:1
2firewall-cmd --zone=public --add-port=6379/tcp
永久生效再加上 --permanent 然后reload防火墙
8.更新防火墙规则:1
2
3firewall-cmd --reload
firewall-cmd --complete-reload
两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务
拒绝所有包1firewall-cmd --panic-on
取消拒绝状态1firewall-cmd --panic-off
查看是否拒绝1firewall-cmd --query-panic
设置默认接口区域1firewall-cmd --set-default-zone=public 立即生效无需重启
打开一个服务,类似于将端口可视化,服务需要在配置文件中添加,/etc/firewalld 目录下有services文件夹,这个不详细说了,详情参考文档1firewall-cmd --zone=work --add-service=smtp
移除服务1firewall-cmd --zone=work --remove-service=smtp
Linux Shell编程
获取当前脚本运行目录1
2
3cd `dirname $0`
BIN_DIR=`pwd`
echo $BIN_DIR
遍历目录下的所有文件或文件夹1
2
3
4
5
6
7
8
9for file in $BIN_DIR
do
if test -d $file
then
echo "$file这是个文件夹"
else
echo "$file这是个文件"
fi
done
判断指定路径下是否是文件或文件夹1
2
3
4
5
6if test -f $file/bin/start.sh
then
echo "$file/bin/start.sh文件存在"
else
echo "$file/bin/start.sh文件不存在"
fi
判断文件路径是否存在1
2
3
4
5
6
7
8if test -e $file/bin/startt.sh
then
echo "$file/bin/startt.sh存在"
fi
if test ! -e $file/bin1
then
echo "$file/bin1文件不存在"
fi
判断文件是否可读、可写、可执行1
2
3if test -r $file/bin/start.sh
if test -w $file/bin/start.sh
if test -x $file/bin/start.sh
字符串正则比较1
2
3
4
5
6
7
8for file in $BIN_DIR
do
#支持bash中的通配符扩展
if [[ $file = *.war ]]
then
echo "找到一个war包$file"
fi
done
数字计算1
2
3count=`expr $count + 1`
或者
let "count=$count+1"
使用命令快速跳转目录
在 ~/.bashrc配置文件中配置快捷键对应的命令,然后再source ~/.bashrc1
2
3
4
5
6
7
8
9
10alias dubbo='cd /apps/product/dubbo'
alias tomcat='cd /apps/product/tomcat'
alias tomcatbin='cd /apps/product/tomcat/bin'
alias tomcatweb='cd /apps/product/tomcat/webapps'
alias log1='sh /apps/product/dubbo/log.sh 1'
alias log2='sh /apps/product/dubbo/log.sh 2'
alias log3='sh /apps/product/dubbo/log.sh 3'
alias log4='sh /apps/product/dubbo/log.sh 4'
alias log5='sh /apps/product/dubbo/log.sh 5'
alias logtomcat='tail -f /apps/product/tomcat/logs/*.out'
多个dubbo服务放到同一个目录下,启动脚本和停止脚本如下
启动脚本 start.sh1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37#!/bin/sh
cd `dirname $0`
BIN_DIR=`pwd`
TOMCAT_DIR=/apps/product/tomcat/webapps
echo "开始移动war包..."
for file in $BIN_DIR
do
if [[ $file = *.war ]]
then
echo "找到一个war包$file,移动到文件夹$TOMCAT_DIR目录下"
mv $file $TOMCAT_DIR
fi
done
echo "war包移动完成..."
echo "开始解压tar包..."
for file in $BIN_DIR/*
do
if [[ $file = *.tar.gz ]]
then
echo "开始解压压缩包$file"
tar -zxf $file
rm -rf $file
fi
done
echo "tar包解压完成..."
for file in $BIN_DIR/*
do
if test -d $file
then
if test -f $file/bin/startt.sh
then
sh $file/bin/startt.sh
fi
fi
done
ps -aux | grep java
停止脚本 stop.sh1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#!/bin/sh
cd `dirname $0`
BIN_DIR=`pwd`
echo $0
for file in $BIN_DIR
do
if test -d $file
then
if test -f $file/bin/stop.sh
then
sh $file/bin/stop.sh
fi
fi
done
查看dubbo日志脚本 log.sh
使用方式sh log.sh 11
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#!/bin/sh
num=$1
cd `dirname $0`
BIN_DIR=`pwd`
count=1
for file in $BIN_DIR
do
if [ -e $file/logs/stdout.log ]
then
if [ $1 -eq $count ]
then
echo "开始查看日志文件$file/logs/stdout.log"
tail -f $file/logs/stdout.log
break;
else
count=`expr $count + 1`
fi
fi
done
用户创建和分组
linux添加用户1adduser app
给用户添加密码1
2
3passwd app
输入密码
输入确认密码
添加分组1groupadd app
删除分组1groupdel app
查看用户所属组1groups app
将用户添加到其它组1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21usermod -a -g app -G root app
-a是append的意思
-g是所属组
-G是所属附加组
附usermod使用说明:
功能说明:修改用户帐号。
语 法:usermod [-LU][-c ][-d ][-e ][-f ][-g ][-G ][-l ][-s ][-u ][用户帐号]
补充说明:usermod可用来修改用户帐号的各项设定。
参 数:
-c 修改用户帐号的备注文字。
-d登入目录> 修改用户登入时的目录。
-e 修改帐号的有效期限。
-f 修改在密码过期后多少天即关闭该帐号。
-g 修改用户所属的群组。
-G 修改用户所属的附加群组。
-l 修改用户帐号名称。
-L 锁定用户密码,使密码无效。
-s 修改用户登入后所使用的shell。
-u 修改用户ID。
-U 解除密码锁定。
删除用户1userdel app
创建完新用户,就会在/etc/passwd文件中有该用户的相关信息
用户切换1su app
切回root用户1su root
修改文件夹及里面的文件所属用户1chown app -R /usr/local/elasticsearch
修改文件夹及里面的文件所属用户组1chgrp app -R /usr/local/elasticsearch