**vim 编辑器**
vim a.txt 创建编辑a.txt文件
vim xx文件 编辑文件
按Esc进入普通模式,在该模式下使用方向键或者h,j,k,l键可以移动游标
按键 说明
h 左
l 右(小写L)
j 下
k 上
w 移动到下一个单词
b 移动到上一个单词
**插入i**
命令 说明
i 在当前光标处进行编辑
I 在行首插入
A 在行末插入
a 在光标后插入编辑
o 在当前行后插入一个新行
O 在当前行前插入一个新行
cw 替换从光标所在位置后到一个单词结尾的字符
从普通模式输入:进入命令行模式,输入w回车,保存文档。输入:w 文件名可以将文档另存为其他文件名或存到其它路径下
**退出或保存**
命令 说明
:q! 强制退出,不保存
:q 退出
:wq! 强制保存并退出
:w <文件路径> 另存为
:saveas 文件路径 另存为
:x 保存并退出
:wq 保存并退出
普通模式下输入Shift+zz即可保存退出vim
**删除**
命令 说明
x 删除游标所在的字符
X 删除游标所在前一个字符
Delete 同x
dd 删除整行
dw 删除一个单词(不适用中文)
d$或D 删除至行尾
d^ 删除至行首
dG 删除到文档结尾处
d1G 删至文档首部
2dd表示一次删除2行
**跳转**
nG(n Shift+g) 游标移动到第 n 行(如果默认没有显示行号,请先进入命令模式,输入:set nu以显示行号)
gg 游标移动到到第一行
G(Shift+g) 到最后一行
普通模式下使用下列命令在行内按照单词为单位进行跳转
命令 说明
w 到下一个单词的开头
e 到当前单词的结尾
b 到前一个单词的开头
ge 到前一个单词的结尾
0或^ 到行头
$ 到行尾
f<字母> 向后搜索<字母>并跳转到第一个匹配的位置(非常实用)
F<字母> 向前搜索<字母>并跳转到第一个匹配的位置
t<字母> 向后搜索<字母>并跳转到第一个匹配位置之前的一个字母(不常用)
T<字母> 向前搜索<字母>并跳转到第一个匹配位置之后的一个字母(不常用)
依次进行如下操作练习:
在普通模式下,任意跳转到一行,使用w跳转到一个单词的开头,然后使用dw删除这个单词
在普通模式下,使用e跳转到一个单词的结尾,并使用~将游标所在字母变成大写或小写
小技巧:你在完成依次跳转后,可以使用Ctrl+o快速回到上一次(跳转前)光标所在位置,这个技巧很实用,比如当你在写代码时,忽然想起有个bug,需要修改,这时候你跳过去改好了,只需要按下Ctrl+o就可以回到你之前的位置
**复制剪切**
普通模式中使用y复制
普通模式中,yy复制游标所在的整行(3yy表示复制3行)
普通模式中,y^ 复制至行首,或y0。不含光标所在处字符。
普通模式中,y$ 复制至行尾。含光标所在处字符。
普通模式中,yw 复制一个单词。
普通模式中,y2w 复制两个单词。
普通模式中,yG 复制至文本末。
普通模式中,y1G 复制至文本开头。
普通模式中使用p粘贴
普通模式中,p(小写)代表粘贴至光标后(下)
普通模式中,P(大写)代表粘贴至光标前(上)
打开文件进入普通模式练习上述命令,这会儿你就可以随意yy了,一 一+
其实前面讲得dd删除命令就是剪切,你每次dd删除文档内容后,便可以使用p来粘贴,也这一点可以让我们实现一个很爽快的功能——交换上下行:ddp,就这么简单,即实现了快速交换光标所在行与它下面的行
**替换撤销**
命令 说明
r+<待替换字母> 将游标所在字母替换为指定字母
R 连续替换,直到按下Esc
cc 替换整行,即删除游标所在行,并进入插入模式
cw 替换一个单词,即删除一个单词,并进入插入模式
C(大写) 替换游标以后至行末
~ 反转游标所在字母大小写
u{n} 撤销一次或n次操作
U(大写) 撤销当前行的所有修改
Ctrl+r redo,即撤销undo的操作
输入fa 跳转到第一个a字符
输入r,并且输入b,a字符被b字符替换(实用)
输入R替换字符,输入新字符串,输入完按ESC回到普通模式(实用)
输入cc替换整行字符,输入新字符串,输入完按ESC回到普通模式
输入cw 替换一个英文字(word),输入完按ESC回到普通模式(实用)
输入~,翻转游标所在字符的大小写
输入C 替换至行尾,即游标所在处以后的字都会被替换,输入完按ESC回到普通模式
输入u 撤销上一次的操作
**查找**
?与/功能相同,只不过?是向上而/是向下查找。
进入查找之后,输入n和N可以继续查找
普通模式下输入\*寻找游标所在处的单词
普通模式下输入\#同上,但 \# 是向前(上)找,\*则是向后(下)找
普通模式下输入g\*同\* ,但部分符合该单词即可
普通模式下输入g\#同\# ,但部分符合该单词即可
n表示继续查找,N反向查找
**视图**
命令行模式下输入:new 打开一个新的vim视窗
命令行模式下输入:vsp 2.txt 打开新的横向视窗来编辑2.txt
命令行模式下输入:vsp 3.txt 打开新的横向视窗来编辑3.txt
如果使用非chrome浏览器可以使用Ctrl+w进行视窗间的跳转
分别在不同视窗的命令行模式下输入:q!退出多视窗编辑
ssh 192.168.1.155 (表示用root用户登录到服务器)
ssh user1@192.168.1.155 (表示用user1登录到服务器)
ssh 192.168.1.155 -l user2 -p 8080 (表示user2用户用8080端口连接到192.168.1.155的服务器)
history 查看历史命令记录
history 10 执行历史记录第10条命令
ifconfig 查看本机ip地址信息
mkdir temp 创建文件
mv temp test 修改文件
mv temp/a.txt test 移动文件
cp temp/a.txt test 复制文件
rm -rf * 删除当前目录下的所有文件
rm xx 删除文件
rz 上传文件
sz 下载文件
tar -cvf log.tar log2012.log 仅打包,不压缩!
tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩
tar -ztvf log.tar.gz 查看使用 gzip 压缩的log.tar.gz,解压是要加z
tar -zxvf log.tar.gz 解压 gzip 压缩的log.tar.gz,解压是要加z
cd / 进入跟目录
cd .. 返回上级目录
find / -name 'java' 查找文件,找文件
先查看安装的服务
rpm -qa | grep java 或者rpm -qa | grep jdk
rpm -e 卸载软件包
rpm -qa 查看系统中安装了那些rpm软件包
yum install package1 #安装指定的安装包package1
yum list #显示所有已经安装和可以安装的程序包
yum install yum-fastestmirror 自动搜索最快镜像插件
yum install yumex 安装yum图形窗口插件
yum grouplist 查看可能批量安装的列表
tar –zvxf jdk-7u55-linux-x64.gz 解压jdk
卸载jdk
yum -y remove javajava-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
yum -y install 包名(支持*) :自动选择y,全自动
yum install 包名(支持*) :手动选择y or n
yum remove 包名(不支持*)
rpm -ivh 包名(支持*):安装rpm包
rpm -e 包名(不支持*):卸载rpm包
$ pwd 列出用户当前所处目录路径
$ ls 列出目录下的所有文件或者目录
$ stg
$ ssh devlog@10.11.111.145
$ slgssh -s eim_rstp_stg3
$ tail -c 600 error.log
$ prd
$ source dinit stg
$ su - logop
$ cd /wls/applogs/rtlog/toa-gp2DRServer4437/toamagw
$ less pafa.log
$ tail -f -n 100 pafa.log 显示最后100条数记录
$ du -sh 文件名 显示文件占用空间大小
$ grep -i ^...... 目标文件 通过字符查找文件
空格向下翻一屏
b键向上翻一屏
$ wc 文件名 显示文件的行数
mkdir 建立一个新目录
rmdir 删除一个目录及其中的文件
touch 创建一个空白的文本文件
cat 连续显示,查看文件内容
more 查看文件内容(只可以向下翻)
less 分页查看文件内容
head 显示文件的前
bzip2 -z 要压缩的文件
bzcat 压缩文件名 查看压缩文件的内容
bzip2 -d 要解压的文件 解压文件
$ 命令 --help 查看命令帮助文档
1、tail -f filename
说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。
2、tail -n 20 filename
说明:显示filename最后20行。
3、tail -n +20 filename
说明:显示filename前面20行。
4、tail -r -n 10 filename
说明:逆序显示filename最后10行。
命令将某捷银流水号的日志输出到临时文件中
cat -n 2017-06-19.0.log | grep 'JY20170619222420256' > temp.log
命令加粗显示
grep –color=always 'JY20170619222420256' temp.log
查某个文件的大小
du -s 文件 ,ls -lh 文件
查所有文件大小
du -sh * 或者 ls -lht
查看cup 使用率
Top
查看内存使用率
cat /proc/meminfo 或者free
查看CPU 信息
lscpu
查看占用端口
netstat -tunlp |grep 端口号 或者 lsof -i:端口号
查看主机是否通讯
数据库有问题呀。目前看是连不上数据库,找DBA看下。
[root@xxx ~]$ telnet -b 10.31.171.53 10.31.9.193 1539
Trying 10.31.9.193...
telnet: connect to address 10.31.9.193: Connection refused
[root@xxx ~]$
查看网络DNS
[root@localhost java]# nslookup www.baidu.com
Server: 192.168.129.2
Address: 192.168.129.2#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 115.239.210.27
Name: www.a.shifen.com
Address: 115.239.211.112
查看路由
[root@localhost java]# route -n
常用网络排查或网络路由跟踪
traceroute www.baidu.com
记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用traceroute -q 4 www.58.com,表示向每个网关发送4个数据包。 有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。 有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n参数来避免DNS解析,以IP格式输出数据。 如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。
访问http 请求
Curl
curl www.baidu.com
wget 访问或下载请求
wget www.baidu.com
安装jdk
vi /etc/profile
#修改java运行环境
export JAVA_HOME="xxx"
export PATH="$PATH:$JAVA_HOME/bin"
export JRE_HOME="$JAVA_HOME/jre"
export CLASSPATH=".:$JAVA_HOME/lib:$JRE_HOME/lib"
修改完成后,使用source /etc/profile 命令进行更新;
查找服务器
ps -ef|grep jboss
结束服务进程
kill -9 1146
启动服务
service jboss start
将war包复制移动到另一台服务器上
scp xxxx.war root@127.0.0.1:/root
查看文件大小
df -h
ps -ef|grep mem
service memcached start
通过占用的端口查找服务器
[root@localhost logs]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 4311 root 49u IPv6 52236 0t0 TCP *:webcache (LISTEN)
[root@localhost logs]# ps axu|grep 4311
开通防火墙
查看防火墙
[root@localhost logs]# iptables -L -n
开通8080 端口
[root@localhost logs]# iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
[root@localhost logs]# service iptables save
[root@localhost logs]# service iptables restart
[root@localhost logs]# iptables -L -n
或修改文件/etc/sysconfig/iptables.
[root@localhost logs]#vi /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
[root@localhost logs]# service iptables restart
查看Linux 系统
[root[@localhost] logs]# cat /etc/issue
查看端口
netstat -anp | grep 8080
切换到root账户下
[root@oracle]# cd /etc/sysconfig/
[root@oracle]# vi iptables
A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT
[root]# /etc/init.d/iptables save
[root]#/sbin/service iptables save
网上还有人是这么做的
[root]# /sbin/iptables -A INPUT -p tcp --dport 1158 -j ACCEPT
[root]# /etc/init.d/iptables save
[root]# /sbin/iptables -L -n 还是不能显示 对1158端口号开放
/sbin/iptables -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT
补充:
redhat中那个iptables在/sbin目录下,所以要用 /sbin/iptables,
还有[root]# /etc/rc.d/init.d/iptables start
Usage: /etc/rc.d/init.d/iptables {start|stop|restart|condrestart|status|panic|save}
新建用户
su root
sudo adduser 新建的用户
修改新建用户名的密码
su root
passwd 用户
New UNIX password:
Retype new UNIX password:
目前只有本机可以访问,要让局域网所有IP都能访问,需要做如下设置,修改配置文件
1.vi /usr/java/jboss-4.2.2.GA/server/default/deploy/jboss-web.deployer/server.xml
将${jboss.bind.address}修改为0.0.0.0
2.配置防火墙,允许http端口(80,8009,8080)
a.首先查看防火墙的规则
/etc/init.d/iptables status
b.编辑防火墙
vi /etc/sysconfig/iptables
注意要在最后一句的前面添加如下语句:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8009 -j ACCEPT
c.重启防火墙
/etc/init.d/iptables restart
d.再查看防火墙
/etc/init.d/iptables status
已成功添加80和8009的端口
3.运行
/usr/java/jboss-4.2.2.GA/bin/run.sh -b 0.0.0.0
4.监听
netstat -antlp |grep 80
杀不掉进程时
# ps -ef | grep find | grep -v grep
nagios 4507 1 0 Mar22 ? 00:00:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
nagios 5940 1 0 Mar22 ? 00:00:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
nagios 7470 1 0 Mar22 ? 00:00:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
root 8880 1 0 Mar22 ? 00:00:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
root 9003 1 0 Mar22 ? 00:00:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
root 9150 1 0 Mar22 ? 00:00:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
nagios 16276 1 0 Mar22 ? 00:00:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
nagios 25925 1 0 Mar22 ? 00:00:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
nagios 27372 1 0 Mar22 ? 00:00:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
可以看出父进程是1,即init进程.
# ps aux | grep find | grep -v grep
nagios 4507 0.0 0.0 5328 644 ? D Mar22 0:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
nagios 5940 0.0 0.0 3816 556 ? D Mar22 0:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
nagios 7470 0.0 0.0 5412 640 ? D Mar22 0:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
root 8880 0.0 0.0 5516 496 ? D Mar22 0:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
root 9003 0.0 0.0 4268 572 ? D Mar22 0:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
root 9150 0.0 0.0 3860 572 ? D Mar22 0:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
nagios 16276 0.0 0.0 5604 640 ? D Mar22 0:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
nagios 25925 0.0 0.0 4504 644 ? D Mar22 0:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
nagios 27372 0.0 0.0 4992 644 ? D Mar22 0:00 /usr/bin/find / -maxdepth 2 -type f -mmin -61 -ls
可以看出这些进程的状态是D. 我们知道D(disk)状态的进程是硬件资源不满足而处于深度休眠状态, 一般是等待磁盘. 这种进程用kill -9杀不掉, 要么继续等, 要么重启. 难道只能重启服务器才能解决么???
在项目实施中经常需要用用zookeeeper集群环境,当需要定位zookeeper集群是否稳定的时候,会需要判断集群中leader是否进行改变,这时候就需要命令来查看
zookeeper-3.4.6/bin ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/storm/zookeeper/bin/../conf/zoo.cfg
Mode: follower
zookeeper-3.4.6/bin ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/storm/zookeeper/bin/../conf/zoo.cfg
Mode: leader
jvm 性能调优工具之 jps
jps
jps -l
-q:只输出进程 ID
-m:输出传入 main 方法的参数
-l:输出完全的包名,应用主类名,jar的完全路径名
-v:输出jvm参数
-V:输出通过flag文件传递到JVM中的参数
nohup 命令
用途:不挂断地运行命令。
nohup /root/start.sh &