Linux小技巧

1.修改hostname不重启生效

[root@localhost ~] vim /etc/sysconfig/network
[root@localhost ~] vim /etc/hosts
修改完后,再将当前修改后的hostname写入内核
[root@localhost ~] echo  servername > /proc/sys/kernel/hostname
再次打开新的终端即显示为新的hostname

1.1 ifconfig

ifconfig在centos7上默认不在安装了,ifconfig属于net-tools包

获取 eth0 的IP,有水平的写法:
[root@localhost data]# /sbin/ifconfig eth0 |awk -F '[ :]+' '$0 ~ "inet addr"{print $4}'
192.168.86.84
[root@localhost data]# 

1.2 Centos7 修改默认网卡ens33为eth0

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-eth0
[root@localhost network-scripts]# vim ifcfg-eth0 
NAME=eth0
DEVICE=eth0
[root@localhost network-scripts]# vim /etc/sysconfig/grub 
关闭命名规则
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
生成新的启动菜单
[root@localhost network-scripts]# grub2-mkconfig -o /boot/grub2/grub.cfg   

2.vim 优化

[root@cloud ~]# cat /root/.vimrc 
set number		#显示行号
set tabstop=4	 #第一行设置tab键为4个空格,第二行设置当行之间交错时使用4个空格
set shiftwidth=4
set autoindent	#第一行,vim使用自动对起,也就是把当前行的对起格式应用到下一行
set smartindent   #第二行,依据上面的对起格式,智能的选择对起方式,对于类似C语言编
set vb t_vb=	  #当vim进行编辑时,如果命令错误,会发出一个响声,该设置去掉响声(没错=是空的)


if has(“vms”)	 #修改一个文件后,自动进行备份,备份的文件名为原文件名加“~“后缀
   set nobackup " do not keep a backup file, use versions instead
else
   set backup " keep a backup file
endif
[root@cloud ~]# cat /root/.vimrc
set number		
set tabstop=4	
set shiftwidth=4
set autoindent	
set smartindent   
set vb t_vb=	  
if has("vms")
	set nobackup " do not keep a backup file, use versions instead
else
	set backup " keep a backup file
endif
[root@cloud ~]#

查找后高亮显示取消 输入 :nohl
如果设置完后,发现功能没有起作用,检查一下系统下是否安装了vim-enhanced包,查询命令为:
[root@cloud ~]# rpm –q vim-enhanced

2.1 vim 锁定

[root@cloud ~]# vim /data/test
#!/usr/bin/python
name = ['haha','hehe','xixi']
for i in name:
print(i)
`
`
`

按组合键 Ctrl+s 时会将当前的界面锁定
解锁为 Ctrl+q 即可解锁

2.2 vim内补全

按Ctrl+n键

2.3 vim 粘贴 保留原来格式,不自动缩进

:set paste

2.3 vim 删除指定字符串

按d+t+字符串结束符

2.4 vim 添加新建 shell 默认信息

[root@MyFirstwon ~]# cat .vimrc 
set tabstop=4	
set shiftwidth=4
set autoindent	

autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
        if expand("%:e") == 'sh'
        call setline(1,"#!/bin/bash")
        call setline(2,"###############################################")
        call setline(3,"# Author:		 MyFirstwon")
        call setline(4,"# Data:			".strftime("%Y-%m-%d"))
        call setline(5,"# FileName:	        ".expand("%"))
        call setline(6,"# Description:		 The test script")
        call setline(7,"# Copyright(C):		".strftime("%Y")."  All rights reserved")
        call setline(8,"###############################################")
        call setline(9,"")
        endif
endfunc
autocmd BufNewFile * normal G


[root@MyFirstwon ~]# 

vim

2.5 vim 列编辑

1.按 ctrl +v  进入列选择模式
2.按 Shift +i (大写 I )进行列编辑 ,光标会自动跳转到所选择行的第一行行首,并会进入到 insert 模式 
3.输入完按 Esc 键 即可

3 history 添加时间

4.Xshell 支持rz和sz命令

安装:yum -y install lrzsz

原理是利用 ZModem 协议来从Linux服务器传送/发送文件到本地/服务器,一次可以传送/发送一个或多个文件。

sz:将选定的文件发送(send)到本地机器
rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器

-b 以二进制方式传输(binary)。

-e 对控制字符转义(escape),这可以保证文件传输正确。

为保证上传的文件内容在服务器端保存之后与原始文件一致,最好同时设置这两个标志,如下所示方式使用:

rz -be 或 sz -be
rz/sz的文件存储路径:Xshell文件--属性--文件传输--下载路径

5.Firewall

Centos7.x 开始防火墙已由iptables转为firewall
查看已经开放的端口:
firewall-cmd --list-ports
开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
–zone #作用域

–add-port=80/tcp #添加端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效

重启防火墙

firewall-cmd --reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

6.fuser能识别出正在对某个文件或端口访问的进程,lsof能够找出正在对指定文件访问的进程

它们两者之间有何区别?
fuser有一个特别的用法在于它可以一次杀死那些正在访问指定文件的进程

[root@cloud ~]# df -Th
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda3      ext4    36G  2.9G   31G   9% /
tmpfs          tmpfs  931M  228K  931M   1% /dev/shm
/dev/sda1      ext4   388M   31M  337M   9% /boot
/dev/sdb1      ext4    20G  223M   19G   2% /data
[root@cloud ~]# umount /data
umount: /data: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
[root@cloud ~]# fuser -v /data/
                     用户     进程号 权限   命令
/data/:              root      73924 ..c.. bash
[root@cloud ~]# 

用fuser -k 杀死所有正在使用该文件的进程:

[root@cloud ~]# fuser -k /data
/data:               73924c
[root@cloud ~]# fuser -v /data
[root@cloud ~]# umount /data
[root@cloud ~]# df -Th
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda3      ext4    36G  2.9G   31G   9% /
tmpfs          tmpfs  931M  228K  931M   1% /dev/shm
/dev/sda1      ext4   388M   31M  337M   9% /boot
[root@cloud ~]# 

fuser -l 可以列出它所知的信号(高级用法):

[root@cloud ~]# fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM
STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
UNUSED
[root@cloud ~]# 

高级用法我还没试过找天试了再分享

lsof也可以查看占用指定文件的程序:

[root@cloud ~]# lsof /data/
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
bash    73973 root  cwd    DIR    8,3     4096 1048577 /data
vim     73988 root  cwd    DIR    8,3     4096 1048577 /data
[root@cloud ~]# kill -9 73988
[root@cloud ~]# lsof /data/
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
bash    73973 root  cwd    DIR    8,3     4096 1048577 /data
[root@cloud ~]# kill -9 73973
[root@cloud ~]# lsof /data/
[root@cloud ~]# 

lsof 查看占用端口的程序,有时候进程启动时进程pid被占用,这时就可以用losf -i :端口号 看看了

[root@cloud ~]# lsof -i :22
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    3133 root    3u  IPv4  66527      0t0  TCP *:ssh (LISTEN)
sshd    3133 root    4u  IPv6  66529      0t0  TCP *:ssh (LISTEN)
sshd    3885 root    3r  IPv4  87180      0t0  TCP 192.168.31.185:ssh->192.168.31.165:55461 (ESTABLISHED)
sshd    3889 root    3r  IPv4  87237      0t0  TCP 192.168.31.185:ssh->192.168.31.165:55464 (ESTABLISHED)
sshd    3935 root    3r  IPv4  87610      0t0  TCP 192.168.31.185:ssh->192.168.31.165:55466 (ESTABLISHED)
[root@cloud ~]# 

Tip

如何查找对应的yum安装包

[root@localhost ~]# which ssh
/usr/bin/ssh
[root@localhost ~]# rpm -qf `which ssh`
openssh-clients-5.3p1-123.el6_9.x86_64
[root@localhost ~]# man yum
[root@localhost ~]# yum provides /usr/bin/ssh

或

[root@node_1 ~]# yum whatprovides */ifconfig
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.shu.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.nju.edu.cn
net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking tools
源    :base
匹配来源:
文件名    :/sbin/ifconfig

net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking tools
源    :@base
匹配来源:
文件名    :/sbin/ifconfig

[root@node_1 ~]# 

如何快速清空大量目录及文件

[root@localhost ~]# mkdir /tmp/test          //创建一个空目录
[root@localhost ~]# rsync -a --delete-before /tmp/test /path(需清空的目录路径)

查看服务器硬件信息

[root@localhost ~]# yum -y install dmidecode
[root@localhost ~]# dmidecode -t 1
# dmidecode 3.0
Scanning /dev/mem for entry point.
SMBIOS 2.8 present.

Handle 0x0100, DMI type 1, 27 bytes
System Information
Manufacturer: Alibaba Cloud
Product Name: Alibaba Cloud ECS
Version: pc-i440fx-2.1
Serial Number: 0b5a87b9-6335-42a6-8e7f-ccbc5f742f2b
UUID: 0B5A87B9-6335-42A6-8E7F-CCBC5F742F2B
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Not Specified

[root@localhost ~]# exit

[root@localhost ~]# ls  ^Cxargs -i -t cp /dev/null {}
[root@localhost ~]# 

查看用的是哪种虚拟化技术

[root@MyFirstwon ~]# virt-what 
kvm
[root@MyFirstwon ~]# 

获取服务器外网IP

[root@cloud ~]# curl cip.cc

Man Linux命令

comments powered by Disqus