vimdiff

vimdiff

Ctrl+W Ctrl+W 切换窗口
do 拉过来另个窗口的改变
dp 把改变应用到另个窗口
zo 打开折叠代码
zc (关闭)折叠代码

vimdiff 颜色配置:

vimdiff默认的颜色方案会使红色看不清,可以为vimdiff换个colorschema,例如peaksea(http://www.vim.org/scripts/script.php?script_id=760),放到~/.vim/colors/。修改~/.vimrc:

[plain] view plain copy

if ! has(“gui_running”)
set t_Co=256
endif
if &diff
colors peaksea
endif

centos时区查看和更改方法

一.查看时区
[root@a ~]# date
Fri Sep 30 10:29:33 CST 2016
可见为中国时区 CST – China Standard Time (Standard Time)

[root@a ~]# date -R
Fri, 30 Sep 2016 10:29:24 +0800

[root@a ~]# date +%z
+0800

可见为 东八时区

二.更改时区
rm -rf /etc/localtime #删除当前默认时
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

三.时间自动同步和校正

yum install -y ntp #安装时间同步服务(组件)
ntpdate us.pool.ntp.org #设置同步服务器
date #查看当前时间www.


rpm -qa | grep ntp #查询一下可安装了
chkconfig --list | grep ntp #看下服务情况
chkconifg ntpd on
service ntpd start # 或/etc/init.d/ntpd start

将当前时间和日期写入BIOS,避免重启后失效
hwclock -w

定时同步时间
# /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1

**********
知识拓展

概念:Linux时间有两个
系统时间:也叫软件时间(sys), 1970年1月1日到当前时间的秒数
BOIS时间:也叫硬件时间(hc)

GMT(Greenwich Mean Time)代表格林尼治标准时间,这个大家都知道。
而CST却同时可以代表如下 4 个不同的时区:
Central Standard Time (USA) UT-6:00
Central Standard Time (Australia) UT+9:30
China Standard Time UT+8:00
Cuba Standard Time UT-4:00

可见,CST可以同时表示美国,澳大利亚,中国,古巴四个国家的标准时间。

修改设置时区
方法(3) 适用于Debian
dpkg-reconfigure tzdata

CST – China Standard Time (Standard Time)

ssh-keygen 基本用法

ssh-keygen 基本用法

生成ssh key的时候,可以通过 -f 选项指定生成文件的文件名,如下
[root@a]$ ssh-keygen -f test -C "test key"
~~文件名 ~~~~ 备注
如果没有指定文件名,会询问你输入文件名:
[ root@a]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/evan/.ssh/id_rsa):
你可以输入你想要的文件名,这里我们输入test。

密码 私key 文件的密码
之后,会询问你是否需要输入密码。输入密码之后,以后每次都要输入密码。请根据你的安全需要决定是否需要密码,如果不需要,直接回车:

#这种办法更加方便
或者 -t type 指定要创建的密钥类型。可以使用:”rsa1″(SSH-1) “rsa”(SSH-2) “dsa”(SSH-2)
[root@a]$ ssh-keygen -t rsa -f test -C "test key"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
结果

如果文件名是test,结果是:
[root@a]$ ll test*
-rw——- 1 huqiu huqiu 1675 Sep 15 13:24 test
-rw-r–r– 1 huqiu huqiu 390 Sep 15 13:24 test.pub
备注

上面生成的命令中,-C选项是公钥文件中的备注:

[root@a]$ cat test.pub
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAQEAlgjiMw7AskxbvpQY9rmZPQxQBzh9laxFvbaini2EgmQkNsXBA9WJOXn2YBJauoiVsdUKBWA97avjsobrTxsCYvFr1yQQvTfTlbqlqGNIhQc/3HjTl2pIkClpDWvBrRN+jpyESS4MNbfOL1qjT4c/QhGvj6U6HrN6kUyn58oyyJpTzOLG74AZELJ2Led57QvTw1yJXZuAMWioR0A3BGd25fdocLX3ebux6ya8AsloOVYfsAqGlggrARe6FXjLfMH4a/nxaAdiDYVXU/Vr1ybK9P7SfyEDGJi3JtgiPUlA6vPxUC
E+9IJPQaqqeqCGzrJ6G/XO7om1v9YLLG/H/ZN2tQ== test key
~~~~备注
文件的权限

为了让私钥文件和公钥文件能够在认证中起作用,请确保权限正确。
对于.ssh 以及父文件夹,当前用户用户一定要有执行权限,其他用户最多只能有执行权限。
对于公钥和私钥文件也是: 当前用户一定要有执行权限,其他用户最多只能有执行权限。
对于利用公钥登录,对其他用户配置执行权限是没有问题的。但是对于git,公钥和私钥, 以及config等相关文件的权限,其他用户不可有任何权限。
authorized_keys

ssh-keygen 基本用法

https://wiki.archlinux.org/index.php/SSH_keys_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

ssh-keygen 中文手册

Linux中tty、pty和pts概念及区别

先说是tty
tty:理解为终端就好了,比如,显示器,键盘等,一般通过串行总线来发送和显示信息,有波特率这个,一般38400.波特率不对,就会显示乱码啦,当然这个不需要我们设置,系统为你设置好了。对于嵌入式设备,连接电脑,就需要设置,一般15200.

终端是一种字符型设备
tty设备包括

1,虚拟控制台,比如echo “hello” > /dev/tty 就在控制台显示。
/dev/tty0代表当前虚拟控制台,而/dev/tty1等代表第一个虚拟控制台,例如当使用ALT+F2进行切换时,系统的虚拟控制台为/dev/tty2 ,当前的控制台则指向/dev/tty2。

2,串口终端设备/dev/ttyS*,

3,伪终端设备/dev/pty*,比如在Windows使用telnet 或ssh等方式登录Linux主机

再说说pts

pts(pseudo-terminal slave),懂英文的就知道了,虚拟终端。比如远程到主机啥的,是pty的实现方法

http://www.ahlinux.com/start/desk/17772.html

查看登录系统用户并将非法登录用户用踢出

1、查看当前登录的用户:使用命令w
[root@ ~]# w
19:05:43 up 1:18, 3 users, load average: 0.02, 0.36, 0.26
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.3.155 18:58 0.00s 0.20s 0.01s w
test pts/1 192.168.3.155 18:58 6:50 0.01s 0.01s -bash
test1 pts/2 192.168.3.155 18:59 6:25 0.01s 0.01s -bash
解释:
第一列是用户名,
第二列是连接的终端,tty表示显示器,pts表示远程连接,
第三列是登陆时间

2、踢出非法用户:pkill -kill -t 用户tty
eg:pkill -kill -t pts/1 即为踢出用户test的登录!

who或者w命令,看当前登录用户。可以kill掉非法用户
查看历史信息,可以看/var/log/secure文件内容。可以查IP,然后设置iptables封IP。

linux死机(当机)查看

[root@localhost ~]# last
root pts/0 192.168.1.104 Sat Aug 13 13:32 still logged in
reboot system boot 2.6.32-573.el6.x Sat Aug 13 13:31 – 13:34 (00:02)
root pts/0 192.168.1.104 Sat Aug 13 13:15 – crash (00:15)

[root@localhost ~]# grep crash /var/log/messages
#for 炸弹后的结果 crash
Aug 13 13:00:39 localhost kernel: crash memory driver: version 1.1
Aug 13 13:00:39 localhost kdump: No crashkernel parameter specified for running kernel
Aug 13 13:31:17 localhost kernel: Command line: ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
Aug 13 13:31:17 localhost kernel: crashkernel=auto resulted in zero bytes of reserved memory.
Aug 13 13:31:17 localhost kernel: crash memory driver: version 1.1
Aug 13 13:31:17 localhost kdump: No crashkernel parameter specified for running kernel
[root@localhost ~]# grep crash /var/log/boot.log

小内存VPS的MySql和Php优化设置

512内存VPS的MySql和Php优化设置
(其实可以参考一下张宴的那个)

mysql
修改以下参数:

key_buffer = 16K
max_allowed_packet = 1M
thread_stack = 64K
table_cache = 4
sort_buffer = 64K
net_buffer_length = 2K

如果你不使用InnoDB表,就在文件底部禁用InnoDB:

skip-innodb

这么一搞 php 在前面 了 但是感觉好像访问慢了一些些呢

接下来优化一下Php的设置

确保以下的参数已经设置好,主要要去掉前面的注释符号“;”

max_execution_time = 30
memory_limit = 64M
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
display_errors = Off
log_errors = On #这个我关了
error_log = /var/log/php.log
register_globals = Off #这个我没看到 
注意:这里的64M设置对大部分站点都适用,如果是更大的站点,你需要改成128M或者更大。

pm = dynamic
#这个选项决定着php-fpm的进程管理方式,对于小内存的vps来说,设置成dynamic可以让php-fpm根据需求自动调整进程的数量,节约内存。

pm.max_children = 10
#php-fpm最大的进程数,可以根据内存大小/40M得到,当然对于mysql、nginx都和php在同一台机子上面跑的环境,需要留出一定的余量。

pm.min_spare_servers = 3
#php-fpm在空载时,保留的最小进程数。

pm.max_spare_servers = 6
#php-fpm在空载时,保留的最大的进程数。

pm.start_servers = 3
#php-fpm启动时fork的进程数量,默认值是min_spare_servers + (max_spare_servers – min_spare_servers) / 2

pm.max_requests = 2048
#某些php模块可能存在内存溢出的情况,所以有时候可以看到某个php-fpm进程的内存占用变得奇高。设置这个参数,可以使单个进程在处理N个请求后重启,有效避免内存溢出。小内存的vps建议启用这个参数并且设置一个比较小的值。

小内存VPS的MySql和Php优化设置
https://mikemiao111.com/php-fpm-memory/
https://www.douban.com/note/315222037/
http://blog.csdn.net/dc_726/article/details/12340349

https://mikemiao111.com/php-fpm-memory/
https://blog.kuoruan.com/72.html

linux死机(当机)时间查看

[root@localhost ~]# last
root pts/7 157.122.58.52 Thu Aug 11 16:55 still logged in

reboot system boot 2.6.32-431.el6.x Tue Aug 9 01:22 – 17:34 (2+16:12)
root tty1 Sun Aug 7 03:29 – down (00:00)

[root@localhost ~]# last reboot
reboot system boot 2.6.32-431.el6.x Tue Aug 9 01:22 – 17:40 (2+16:18)
reboot system boot 2.6.32-431.el6.x Sat Aug 6 19:48 – 03:30 (07:41)
reboot system boot 2.6.32-431.el6.x Fri Aug 5 11:41 – 03:30 (1+15:48)

or cat /var/log/boot.log

#cat /var/log/messages | grep shutdown ?

linux运维面试题目

[root@vultr evan]# cat mycreatedir
#!/bin/bash
for no in `seq 1 50`
do
mkdir -p /userdata/user${no}
chmod 0754 /userdata/user${no}

done

#实时抓取并显示当前系统中tcp 80 端口的网络数据信息
root@ubuntu:~# tcpdump -vv tcp port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
17:07:57.868226 IP 61-216-2-15.HINET-IP.hinet.net.53313 > 10.2.43.12.http: Flags [R], seq 3009089

#!/bin/bash
def=30
dir=/data/1/
dir2=/data/2/
for i in `ls -l $dir|awk '{print $9}'`
do
size=`du -shm ${dir}|awk '{print $1}'`

if [[ $size -gt $def ]] ;
then
mv ${dir}/$i ${dir2}
fi

done

列出某个程序进程所打开的文件信息
lsof -c mysql

############
1.快速批量重命令
#!/bin/sh
for file in `ls *.txt`
do
mv $file $(echo $file | sed 's/.txt/_bak.txt/g')
done

for i in $(seq 10)
do
mv ${i}.txt ${i}.txt_bak
done

2. 目录下有 0,  1001,1002  每10秒同步一次 到0目录下

#good
while true;do rsync -avz 0/* 1001/;rsync -avz 0/* 1002/;rm -rf 0/*;sleep 10;done

#在crontab 设置 每10秒跑脚本
* * * * * ./script
* * * * * sleep 10; ./script
* * * * * sleep 20; ./script
* * * * * sleep 30; ./script
* * * * * sleep 40; ./script
* * * * * sleep 50; ./script
script内容
dest_dir=/data/dest_dir
opt_dir=`for loop in $(ls ${dest_dir});do [[ -d ${dest_dir}/${i} ]] && echo $loop;done`
for loop in ${opt_dir}
do
if [[ ${loop} != '0' ]];then
rsync -ar $dest_dir/0/ $dest_dir/$i/
fi
done
[[ $? == 0 ]] && [[ -d $dest_dir/0 ]] && [[ rm -rf $dest_dir/0/*]]

3. mysql 常用的备份方式, mysql常用的工具有哪些

4. 你所熟悉的监控软件, 每个监控软件的差别和优势

5. web 容器有哪些,每个容器的特别

web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器。一个服务器可以多个容器。
apache nginx resin tomcat 

6.ops 你觉得要关注哪些方面的技术

7.http常见的状态码有哪些 每个状态码代表什么

8.常见性能分析命令
top sar uptime