变量赋值,要紧凑,不要有空格
``命令模式,无法换行
1,暴力赋权(a:所有用户,w:写,x:执行,-R:递归所有)
chmod a+wx -R foldername
2,查看文件系统格式
df -T -h
file -s /dev/vda1
cat /etc/fstab
3,查看文件夹大小 du 查看目录占用空间大小
du -h --max-depth=1
du -k 以K为单位查看2017-09-27 09:25
du -m 以M为单位查看
5,查看系统文件使用率
df -h
6,查找进程
ps -ef|grep java
7,同时杀死多个进程
ps -ef|grep hbase|grep -v grep|awk '{print $2}'|xargs -t -i kill -9 {}
8,统计进程数
ps -ef|grep hbase|grep -v grep|wc -l|awk '{print $1}'
netstat -anpt|grep 443|awk '/tcp/ {print $6}'|sort|uniq -c
9,时间同步
service ntpd start
ntpdate 172.18.70.10 和另一主机时间同步
10,sed 操作
#在文件某行前,添加一行
sed -i '1 s/^/good baby\n/' tt.txt
#把匹配的行注释,原文件备份
sed -e 's/^Defaults requiretty.*/# &/' -i.bak /etc/sudoers
11,根据端口号查进程
netstat -lnp | grep 20880
查看所有进程和端口
netstat -apn
12,查看系统默认编码
locale
13, 压缩加密
zip -q -r -P password zipfile.zip sourcefiles.txt #password 是加密密码
unzip -q -n -P password zipfile.zip -d /home/admpub/
13,命令连接符
&& : 成功=》依次执行
|| :失败,执行后面一个
14:shell脚本获取当前目录
V_EXEC_PATH=$(cd `dirname $0`;cd .; pwd)
15,格式化输出date
V_DATE=`date "+%Y%m%d%H%M%S"`
#获得几天前的数据
DATE=$(date +%Y%m%d --date '2 days ago')
16,替换
sed -i 's/原字符串/替换字符串/g' filename //替换文件中的所有匹配项
sed -e 's/^d.*/#&/g' -i.bak test.file //以d开头的行注释(#),并把原文件备份(test.file.bak) &:匹配的部分
17,cpu信息
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
18,gzip
Linux压缩保留源文件的方法:
gzip –c filename > filename.gz
Linux解压缩保留源文件的方法:
gunzip –c filename.gz > filename
19, telnet
telnet ip port
telnet 132.228.27.62 2181
20,环境变量
此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置
/etc/profile
. /etc/profile #使环境变量生效 source /etc/profile
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认
~/.bash_profile
21:可显示电脑以及操作系统的相关信息。
uname -a
说明正在运行的内核版本
cat /proc/version
cat /etc/redhat-release cat /etc/*release*
22,rpm
安装:rpm -ivh
查看:rpm -qa|grep -E '^mysql'
卸载 :rpm -e --nodeps mysql-5.1.73-3.el6_5.x86_64
22.yum info <包名>(tcl) #查看安装包信息
repoquery -q -l <包名> #查看包文件,需安装yum-utils
23,ln 建立连接
ln -s 源文件 目标
24,find查找
find .|xargs grep -ri "IBM" -l #查找目录下文件中包含的字符传,并打印文件
find -name kafka #查找文件 可以模糊匹配 '*kafka*'
grep "kafka" 文件 #查找文件包含的字符串
grep -n "ERROR" Controller.log|tail -1|head -n 1
25,进程限制信息
ulimit -a #查看
ulimit -u 10240 #修改一个进程可以打开的最大文件数
26,命令后面 < /dev/null
程序编写中判别标准输入,当没看到标准输入文件结束程序就不退出.
26:
scp -P 22 -r -f /etc/yum.repos.d/httpsys.repo root@finai17:/etc/yum.repos.d/
-P:端口号
-r:目录递归
-f:已存在,先删除再复制
#root@ 默认同一要用户可以省略
27:排序 sort
sort #正序
sort -r #倒序
28:more
more +/2017-09-21T00:03:01 mongodb.log #指定到第一次出现的所在页
29:标准文件描述符
0 | STDIN | 标准输入 |
1 | STDOUT | 标准输出 |
2 | STDERR | 标准错误输出 |
nohup java -Djava.ext.dirs=./ -classpath ./ HttpUrlUtil 1>/dev/null 2>nohup.out 0</dev/null &
#标准输出到null文件,错误输出到nohup.out ,标准输入为空
30:读取文件
while read line
do
echo $line
done < filename
31:注释
# 单行注释
多行注释:
:<<!
内容
!
32:awk
,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本
awk [-F field-separator] 'commands' input-file(s)
其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
33:查看dns
1,cat /etc/resolv.conf #可修改
2,nslookup www.baidu.com
34:本机IP
ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
35,时间差
V_DATE=`date "+%Y-%m-%d %H:%M:%S"`
V_LAST_START=grep restart crontab.log |tail -n 1|awk '{print $1,$2}'
V_TIME=`date -d "$V_DATE" +%s`
V_LAST_TIME=`date -d "$V_LAST_START" +%s`
V_DURA=`expr $V_TIME - $V_LAST_TIME`
36,查看java进程情况
jstat -gcutil 316(pid)
37:echo
echo -n 不换行输出
echo -e 处理特殊字符
38:exec
a:使用了exec之后,你当前的这个shell的pid就没有了,被exec的命令所替代
b:当exec命令来对文件描述符操作的时候,就不会替换shell,而且操作完成后,还会继续执行接下来的命令
exec < file #file做当前输入源
-
exec<${HADOOP_CONF}/topology.data
-
result=""
-
while read line ; do
-
ar=( $line )
-
if [ "${ar[0]}" = "$nodeArg" ]||[ "${ar[1]}" = "$nodeArg" ]; then
-
result="${ar[2]}"
-
fi
-
done
39:shift 位置参数可以用shift
命令左移,参数总数变少.
比如shift 3
表示原来的$4
现在变成$1
,原来的$5
现在变成$2
等等,原来的$1
、$2
、$3
丢弃,$0
不移动。
不带参数的shift
命令相当于shift 1
40:数组
arr=(lili jone tom)
for i in ${arr[@]}
do
echo ${i}
done
1) 使用${array_name[@]} 或者 ${array_name[*]} 都可以全部显示数组中的元素
2) 同样道理${#array_name[@]} 或者 ${#array_name[*]}都可以用来求数组的长度
3) 使用${#array_name[0]} #获得数组第一个元素
41:删除恢复 不要用rm -rf
lsof
#文件刚刚被删除,想要恢复,先尝试lsof.
#lsof |grep data.file1
# cp /proc/xxx/xxx/xx
/dir/data.file1