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

每天一命令之Linux内置的审计跟踪工具last

Linux内置的审计跟踪工具:last命令

last显示的是自/var/log/wtmp文件创建起所有登录(和登出)的用户。这个文件是二进制文件,它不能被文本编辑器浏览,比如vi、Joe或者其他软件。这是非常有用的,因为用户(或者root)不能像他们希望的那样修改这个文件。

last会给出所有已登录用户的用户名、tty、IP地址(如果用户是远程连接的话)、日期-时间和用户已经登录的时间。

第一列告诉谁是用户
第二列给出了用户如何连接的信息

pts/0 (伪终端) 意味着从诸如SSH或telnet的远程连接的用户
tty (teletypewriter) 意味着直接连接到计算机或者本地连接的用户
除了重启活动,所有状态会在启动时显示
第三列显示用户来自哪里。如果用户来自于远程计算机,你会看到一个主机名或者IP地址。如果你看见:0.0 或者什么都没有,这意味着用户通过本地终端连接。除了重启活动,内核版本会显示在状态中。
第四列:开始时间
第五列:结束时间(still login in 还未退出 down 直到正常关机 crash 直到强制关机)
第六列:持续时间
剩下的列显示日志活动发生在何时。括号中的数字告诉我们连接持续了多少小时和分钟。
显示完整登入登出时间日期 使用 -F 参数

[root@]# last |head
wan pts/0 11.10.17.24 Tue Sep 27 20:24 still logged in
wan pts/0 11.10.17.24 Tue Sep 27 19:30 – 19:31 (00:01) #19:30 登录到19:31
wan pts/1 11.10.17.24 Tue Sep 27 19:27 – 19:31 (00:03)

[root@]# last -n 3
wan pts/0 11.10.17.24 Tue Sep 27 20:24 still logged in
wan pts/0 11.08.17.24 Tue Sep 27 19:30 – 19:31 (00:01)
wan pts/1 11.08.17.24 Tue Sep 27 19:27 – 19:31 (00:03)

查看登录系统用户并将非法登录用户用踢出 https://www.linuxchina.net/?p=3431

https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_72/com.ibm.aix.cmds3/last.htm
http://blog.csdn.net/chaofanwei/article/details/11826567
http://os.51cto.com/art/201402/430091.htm
https://linux.cn/thread-12343-1-1.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。

用户追加到其它用户组以及用户和用户组的相关命令

将一个用户追加到其它用户组中,千万不能直接用:
usermod -G groupA

这样做会使你脱离其他用户组,而成为groupA这个用户组 的成员。

应该用 加上 -a 选项:
usermod -a -G groupA user
-a 代表 append, 也就是 将自己添加到 用户组groupA 中,而会脱离其他用户组。

使用场景:
某用户要求建立ftp用户 ,但是web目录的所有组不是ftp用户 而是www-data 所以得把用户添加到www-data用户组

root@ubuntu:/home/evan# usermod –help
Usage: usermod [options] LOGIN

Options:
-c, –comment COMMENT new value of the GECOS field
-d, –home HOME_DIR new home directory for the user account
-e, –expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE
-f, –inactive INACTIVE set password inactive after expiration
to INACTIVE
-g, –gid GROUP force use GROUP as new primary group
-G, –groups GROUPS new list of supplementary GROUPS
-a, –append append the user to the supplemental GROUPS
mentioned by the -G option without removing
him/her from other groups
-h, –help display this help message and exit
-l, –login NEW_LOGIN new value of the login name
-L, –lock lock the user account
-m, –move-home move contents of the home directory to the
new location (use only with -d)
-o, –non-unique allow using duplicate (non-unique) UID
-p, –password PASSWORD use encrypted password for the new password
-R, –root CHROOT_DIR directory to chroot into
-s, –shell SHELL new login shell for the user account
-u, –uid UID new UID for the user account
-U, –unlock unlock the user account

查看用户所属的组使用命令 groups evan
或者查看文件: grep evan /etc/group

ps 用户和用户组的相关命令

1)管理用户(user)的工具或命令

useradd 注:添加用户
adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwcov 注:同步用户从/etc/passwd 到/etc/shadow
pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo 注:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit 注:和sudo 功能差不多;

2)管理用户组(group)的工具或命令;
groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组
grpck
grpconv 注:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv 注:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件;

ssh常用配置

/etc/ssh/sshd_config #on ubuntu
# 设置选项PermitRootLogin
# 选项设置为without-password,root用户就不能从没有密匙的计算机上登录
# 选项设置为no,将禁止root用户登录,只能用sudo命令从普通用户转成root
PermitRootLogin without-password

#不让root远程登入:
PermitRootLogin no

# 设置选项PasswordAuthentication
# 选项设置为no,只允许用户用基于密匙的方式登录
PasswordAuthentication no

linux 硬件和性能查看

一、如何查看服务器的CPU

判断依据:

1.具有相同core id的cpu是同一个core的超线程。(Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same core id are hyperthreads in the same core.)
2.具有相同physical id的cpu是同一颗cpu封装的线程或者cores。(Any cpu with the same physical id are threads or cores in the same physical socket.)

①物理cpu个数:
[root@localhost ~]# cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l
②每个物理cpu中core的个数(即核数)
[root@localhost ~]# cat /proc/cpuinfo | grep “cpu cores” | uniq cpu cores : 4
这样可以推算出自己服务器的逻辑CPU为物理个数*核数

/proc/cpuinfo 描述中有 6 个条目适用于多内核和超线程(HT)技术检查:processor, vendor id, physical id, siblings, core id 和 cpu cores。
* processor 条目包括这一逻辑处理器的唯一标识符。
* physical id 条目包括每个物理封装的唯一标识符。
* core id 条目保存每个内核的唯一标识符。
* siblings 条目列出了位于相同物理封装中的逻辑处理器的数量。
* cpu cores 条目包含位于相同物理封装中的内核数量。
* 如果处理器为英特尔处理器,则 vendor id 条目中的字符串是 GenuineIntel。

二、查看服务器的内存情况
[root@]# free -m
total used free shared buffers cached
Mem: 64350 12506 51843 0 263 10608
-/+ buffers/cache: 1634 62715
Swap: 11999 0 11999

参数解释:
total 内存总数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总额
buffers Buffer Cache和cached Page Cache 磁盘缓存的大小
-buffers/cache (已用)的内存数:used – buffers – cached
+buffers/cache(可用)的内存数:free + buffers + cached
可用的memory=free memory+buffers+cached
其可使用内存为=51843+263+10608。 Linux的内存使用管理机制是有多少就用多少(特别是在频繁存取文件后),即Linux内存不是拿来看的,是拿来用的。

三、服务器磁盘使用情况
有时感觉硬盘反映很慢,或需要查看日志所在分区时,下列命令可以查看磁盘的使用情况:

[root@]# iostat -x 1 10
Linux 2.6.32-358.el6.x86_64 07/26/2016 _x86_64_ (24 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.18 0.00 0.06 0.58 0.00 99.17

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.28 261.15 0.42 44.21 30.34 2442.90 55.41 0.85 19.02 4.53 20.21

avg-cpu: %user %nice %system %iowait %steal %idle
0.38 0.00 0.13 1.29 0.00 98.21
**********省略

[root@]# iostat -d
Linux 2.6.32-358.el6.x86_64 07/26/2016 _x86_64_ (24 CPU)

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 44.63 30.29 2442.76 3742706 301857704

图解:
Tps 该设备每秒I/O传输的次数(每秒的I/O请求)
Blk_read/s 表求从该设备每秒读的数据块数量
Blk_wrth/s 表示从该设备每秒写的数据块数量

五、查看服务器使用的Linux发行版的名称、版本号及描述信息等
lsb_release -a or root@]# cat /etc/redhat-release

六、查看服务器的平均负载
感觉到系统压力较大时用可top uptime or w 查看下服务器的平均负载。uptime w 的另一个用法是查看你的Linux服务器已经稳定运行多少天没有重启了。

七、查看系统整体性能情况

如果感觉系统比较繁忙,可以用vmstat查看系统整体性能情况。vmstat不仅仅适应于linux系统,它一样适用于FreeBSD等unix系统。
[root@]# vmstat 1 2
procs ———–memory———- —swap– —–io—- –system– —–cpu—–
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 1 0 53079932 270924 10869396 0 0 1 51 4 11 0 0 99 1 0
0 0 0 53079296 270924 10869424 0 0 0 148 404 512 0 0 99 0 0
如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
如果pi,po 长期不等于0,表示内存不足。
如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。

八、查看系统已载入的相关模块
Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。你可以将这些功能编译成一个个单独的模块,待需要时再分别载入。比如说在安装LVS+Keepalived,下列用法被经常用到:
#检查内核模块,看一下ip_vs是否被加载
lsmod |grep ip_vs ip_vs 77313 0
如果要查看当前系统的已加载模块,直接lsmod。

九、Linux下查找PCI设置
有时需要在Linux下查找PCI设置,可用lspci命令,它可以列出机器中的PCI 设备,比如声卡、显卡、Modem、网卡等,主板集成设备也能列出来。lspci 读取的是hwdata 数据库。有的小伙可能和我一样,最关心的还是网卡型号:

[root@~]# lspci | grep Ethernet
07:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
07:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)

su 与sudo

sudo su -和 sudo su是不一样的,前面表示把环境变量也换到root用户即$PATH也改变(输入程序名时的查找路径)

命令名称:su
使用权限:所有使用者
使用方式:su [-fmp] [-c command] [-s shell] [–help] [–version] [-] [USER [ARG]]
说明:变更为其他使用者的身份,除 root 外,需要键入该使用者的密码
参数:
-f 或 –fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
-m -p 或 –preserve-environment 执行 su 时不改变环境变数
-c command 或 –command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
-s shell 或 –shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
–help 显示说明文件
–version 显示版本资讯
– -l 或 –login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
USER 欲变更的使用者帐号
ARG 传入新的 shell 参数

linux cp命令强制覆盖

有进想覆盖个文件或者目录,但是linux老是好心办坏事,老是有个友好的交互,烦死了呢 ,于是总结了一下

方法一: 这个在dovo时就学到了 谢谢绍堂哥
输入\cp命令,作用也是取消cp的别名。
#\cp a test\a 呵呵,这么用也一样好使。

方法二:
输入yes|cp a test\a,使用管道自动输入yes。
#yes | cp a test\a 看到了吧,自动打出一堆yes,替你输入了。

方法三:
输入alias命令,看到系统内部使用的是cp的别名。
#alias
alias cp=’cp -i’
输入unalias cp命令,解除别名。
#unaslias cp (这只是临时取消cp的别名,不是永久的)
#cp a test/a 呵呵,这下正常了吧。

atime mtime and ctime 大话 Linux中如何查看文件的时间

应用场景:
来到这公司,有个老的linux环境,有N台机器,但是他们又不知还有没有用, 我上去一看,有很多好像有用的东西,没人问,只好用文件的相关时间来确定,于是有下面的知识复习复习

在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道文件的创建时间。但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过,那么状态改变时间=创建时间;如果文件创建后,没有被读取过,那么访问时间=创建时间,这个基本不太可能。

与文件相关的几个时间:

1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。

2、修改时间,对文件内容修改一次,这个时间就会更新。比如:vi后保存文件。ls -l列出的时间就是这个时间。

3、状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。查看文件的详细的状态、准确的修改时间等,可以通过stat命令+文件名。

[root@i-10-21-187 yyclouds]# stat tng.sql
File: `tng.sql’
Size: 13065 Blocks: 32 IO Block: 4096 regular file
Device: fc01h/64513d Inode: 20600 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-05-20 15:01:42.705860978 +0800
Modify: 2015-12-14 20:20:19.000000000 +0800
Change: 2015-12-15 00:49:14.853535134 +0800

如上
说明:Access访问时间。Modify修改时间。Change状态改变时间。可以stat *查看这个目录所有文件的状态。

一看这么老了,因为现在是201605了,于是上去poweroff 看有没有人跳出来喽 哈哈

不错的关于 atime ctime mtime 的文章

chmod命令简介

NAME
chmod – change file mode bits

在 shell 中,可以使用chown命令来改变文件所有者。chown命令是change owner(改变拥有者)的缩写。需要要注意的是,用户必须是已经存在系统中的,也就是只能改变为在 /etc/passwd这个文件中有记录的用户名称才可以。

ps: 使用chgrp命令更改文件所属用户组
在shell中,可以使用chgrp命令来改变文件所属用户组,该命令就是change group(改变用户组)的缩写。需要注意的是要改变成为的用户组名称,必须在 /etc/group里存在,否则就会显示错误。
基本语法:
chgrp [-R] 用户组名称 dirname/filename …

文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。

1. 命令格式:
chmod [-cfvR] [–help] [–version] mode file
2. 命令功能:
用于改变文件或目录的访问权限,用它控制文件或目录的访问权限。
3. 命令参数:
必要参数:
-c 当发生改变时,报告处理信息
-f 错误信息不输出
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细处理信息

权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组

权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
– :删除权限,用数字0表示
s :特殊权限
该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
1). 文字设定法:
chmod [who] [+ | – | =] [mode] 文件名
2). 数字设定法
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。
数字设定法的一般形式为:
chmod [mode] 文件名
数字与字符对应关系如下:
r=4,w=2,x=1
若要rwx属性则4+2+1=7
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。

4. 使用实例:
实例1:增加文件所有用户组可执行权限
命令:
chmod a+x log2012.log
输出:
[root@localhost test]# ls -al log2012.log
-rw-r–r– 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chmod a+x log2012.log
[root@localhost test]# ls -al log2012.log
-rwxr-xr-x 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]#
说明:
即设定文件log2012.log的属性为:文件属主(u) 增加执行权限;与文件属主同组用户(g) 增加执行权限;其他用户(o) 增加执行权限。

实例2:同时修改不同用户权限
命令:
chmod ug+w,o-x log2012.log
输出:
[root@localhost test]# ls -al log2012.log
-rwxr-xr-x 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chmod ug+w,o-x log2012.log
[root@localhost test]# ls -al log2012.log
-rwxrwxr– 1 root root 302108 11-13 06:03 log2012.log

说明:
即设定文件text的属性为:文件属主(u) 增加写权限;与文件属主同组用户(g) 增加写权限;其他用户(o) 删除执行权限
实例3:删除文件权限
命令:
chmod a-x log2012.log
输出:
[root@localhost test]# ls -al log2012.log
-rwxrwxr– 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chmod a-x log2012.log
[root@localhost test]# ls -al log2012.log
-rw-rw-r– 1 root root 302108 11-13 06:03 log2012.log
说明:
删除所有用户的可执行权限

实例4:使用“=”设置权限
命令:
chmod u=x log2012.log
输出:
[root@localhost test]# ls -al log2012.log
-rw-rw-r– 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chmod u=x log2012.log
[root@localhost test]# ls -al log2012.log
—xrw-r– 1 root root 302108 11-13 06:03 log2012.log
说明:
撤销原来所有的权限,然后使拥有者具有可读权限
实例5:对一个目录及其子目录所有文件添加权限
命令:
chmod -R u+x test4
输出:
[root@localhost test]# cd test4
[root@localhost test4]# ls -al
总计 312drwxrwxr-x 2 root root 4096 11-13 05:50 .
drwxr-xr-x 5 root root 4096 11-22 06:58 ..
-rw-r–r– 1 root root 302108 11-12 22:54 log2012.log
-rw-r–r– 1 root root 61 11-12 22:54 log2013.log
-rw-r–r– 1 root root 0 11-12 22:54 log2014.log
[root@localhost test4]# cd ..
[root@localhost test]# chmod -R u+x test4
[root@localhost test]# cd test4
[root@localhost test4]# ls -al
总计 312drwxrwxr-x 2 root root 4096 11-13 05:50 .
drwxr-xr-x 5 root root 4096 11-22 06:58 ..
-rwxr–r– 1 root root 302108 11-12 22:54 log2012.log
-rwxr–r– 1 root root 61 11-12 22:54 log2013.log
-rwxr–r– 1 root root 0 11-12 22:54 log2014.log
说明:
递归地给test4目录下所有文件和子目录的属主分配权限
其他一些实例:
1).
命令:
chmod 751 file
说明:
给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
2).
命令:
chmod u=rwx,g=rx,o=x file
说明:
上例的另一种形式
3).
命令
chmod =r file
说明:
为所有用户分配读权限
3).
命令:
chmod 444 file
说明:
同上例
4).
命令:
chmod a-wx,a+r file
说明:
同上例

http://www.cnblogs.com/peida/archive/2012/11/29/2794010.html

https://zh.wikipedia.org/wiki/Chmod

http://www.gnu.org/software/coreutils/manual/html_node/Setting-Permissions.html