一.vi 和vim
vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具
①命令模式
移动光标
w(e) 移动光标到下一个单词
b 移动到光标上一个单词 数字0 移动到本行开头
$ 移动光标到本行结尾 H 移动光标到屏幕首行
M 移动到光标到屏幕的中间一行
L 移动光标到屏幕的尾行
gg 移动光标到文档的首行
G 移动光标到文档尾行 ctrl + f 下一页
ctrl + b 上一页 `. 移动光标到上一次的修改行
移动光标的方法
h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
向下移动5行 5j
向右移动10字符 10l
n(space) 按下数字n,例如10,然后按下空格,光标会向右移动10个字符
查找
/chaoge 在整篇文档中搜索chaoge字符串,向下查找
?chaoge 在整篇文档中搜索chaoge字符串,向上查找 * 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
# 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处 gd 找到光标所在单词匹配的单词,并停留在非注释的第一个匹配上 % 找到括号的另一半!!
复制,删除,粘贴
yy 拷贝光标所在行
dd 删除光标所在行
D 删除当前光标到行尾的内容
dG 删除当前行到文档尾部的内容
p 粘贴yy所复制的内容
x 删除光标所在的字符
u 撤销上一步的操作
3yy 拷贝光标所在的3行
5dd 删除光标所在5行
2.输入模式 (i)
在命令模式下按下字母 i :光标所在位置插入 a: :光标的下一格插入 o: 下一行 插入
3.底线命令模式
:q! 强制退出
:wq! 强制写入退出
:set nu 显示行号
:数字 调到数字那行 随时按下esc可以退出底线命令模式
:! command 暂时离开vim指令模式,执行command的结果
例如 :!ip a 临时看一下ip信息,然后可以回到vim :set nu 显示vim行号
:set nonu 取消行号
二.网络相关
ifconfig 查询、设置网卡和ip等参数
ifup,ifdown 脚本命令,更简单的方式启动关闭网络
1.网卡配置
#编辑网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=: 关联的设备名称,要与文件名的后半部“INTERFACE_NAME”保持一致;
BOOTPROTO={static|none|dhcp|bootp}: 引导协议;要使用静态地址,
使用static或none;dhcp表示使用DHCP服务器获取地址;
IPADDR=: IP地址
NETMASK=:子网掩码
GATEWAY=:设定默认网关;
ONBOOT=:开机时是否自动激活此网络接口;
HWADDR=: 硬件地址,要与硬件中的地址保持一致;可省;
USERCTL={yes|no}: 是否允许普通用户控制此接口;
PEERDNS={yes|no}: 是否在BOOTPROTO为dhcp时接受由DHCP服务器指定的DNS地址;
2.ifconfig
直接输入ifconfig会列出已经启动的网卡,也可以输入ifconfig eth0单独显示eth0的信息
各选项解释是:
eth0 网卡的代号
lo 回环地址loopback
inet IPv4的Ip地址
netmask 子网掩码
broadcast 广播地址
RX/TX 流量发/收情况 tx是发送(transport),rx是接收(receive)
packets 数据包数
errors 数据包错误数
dropped 数据包有问题被丢弃的数量
collisions 数据包碰撞情况,数值太多代表网络状况差
3. ifup ,ifdown 命令
启动/关闭一块网卡
ifup eth0
ifdown eth0
4. ip 命令
ip是一个命令,不是TCP/IP那个ip,这个ip命令是结合了ifconfig和route两个命令的功能。
ip addr show #查看ip信息
5.系统
#查看系统版本信息
cat /etc/redhat-release
CentOS Linux release 7.4. (Core)
#查看内核版本号
uname -r
3.10.-.el7.x86_64
#查看系统多少位
uname -m
x86_64
#查看内核所有信息
uname -a
6.端口
netstat -tunlp 查看所有端口 netstat -tunlp | grep 8000 检查8000端口是否存活
netstat [选项]
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-l或--listening:显示监控中的服务器的Socket;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-a或--all:显示所有连线中的Socket;
7.进程
ps -ef 查看所有进程 ps -ef |grep python #检查python进程是否存活
ps 命令常用参数
-a 显示所有进程
-u 用户以及其他详细信息
-x 显示没有控制终端的进程
kill pid号 终止进程 先用ps查找进程,然后用kill杀掉:
ps -ef | grep vim
root : pts/ :: vim install.log
root : pts/ :: grep vim kill
pkill 批量终止
killall 命令来批量结束某个服务程序带有的全部进程。
例如nginx启动后有2个进程
killall nginx
8.设置主机名
[root@yugo /tmp ::]#hostnamectl set-hostname pyyuc
[root@pyyuc ~ ::]#hostname
pyyuc
三. 用户
1.创建普通用户
#添加用户
useradd 用户名
#设置密码
passwd 用户名 root用户可以修改其他所有人的密码,且不需要验证
2.切换用户
su命令可以切换用户身份的需求,
su - username su命令中间的-号很重要,意味着完全切换到新的用户,
即环境变量信息也变更为新用户的信息
#先看下当前用户(我是谁)
whoami
#切换用户
su - oldboy
#退出用户登录
logout
ctrl + d
Tip:
.超级用户root切换普通用户无需密码,例如“群主”想踢谁就踢谁
.普通用户切换root,需要输入密码
.普通用户权限较小,只能基本查看信息
.$符号是普通用户命令提示符,#是超级管理员的提示符
groupadd命令 group命令用于创建用户组,为了更加高效的指派系统中各个用户的权限,
在工作中常常添加几个用户到一个组里面,这样可以针对一类用户安排权限。 groupadd it_dep
3.删除用户
-f 强制删除用户
-r 同事删除用户以及家目录
userdel -r pyyu
4.sudo 命令
普通用户使用root用户的权限
.root用户在 /etc/sudoers 文件中进行配置 .普通用户执行命令时 ,
sudo 命令
sudo 【选项】【参数】
-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s<shell>:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。
visudo 进行编译 sudoers 自动校验语法
visudo 编辑sudoers文件 写入
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
chao ALL=(ALL) ALL #允许chaoge在任何地方,执行任何命令
四.文件与目录的权限
1.权限观察
先来分析一下文件的类型 - 一般文件
d 文件夹
l 软连接(快捷方式)
b 块设备,存储媒体文件为主
c 代表键盘,鼠标等设备
2.权限依据
Linux权限主要依据三种身份来决定: user/owner 文件使用者,文件属于哪个用户
group 属组,文件属于哪个组
others 既不是user,也不再group,就是other,其他人
3,文件权限
r read可读,可以用cat等命令查看
w write写入,可以编辑或者删除这个文件
x executable 可以执行
4.目录权限
r 可以对此目录执行ls列出所有文件
w 可以在这个目录创建文件
x 可以cd进入这个目录,或者查看详细信息
5.查看用户权限
id指令查看用户所属群主
[root@oldboy_python ~ ::]#id root
uid=(root) gid=(root) 组=(root)
6.修改权限
①修改属主 chown
修改属主为root [root@oldboy_python /tmp ::]#chown root pyyu.txt
查看信息
[root@oldboy_python /tmp 16:43:42]#ll pyyu.txt
-rw-rw-r-- 1 root pyyu 0 8月 11 16:41 pyyu.txt
②修改属组 chgrp
[root@oldboy_python /tmp ::]#ll pyyu.txt
-rw-rw-r-- root pyyu 8月 : pyyu.txt
[root@oldboy_python /tmp ::]#chgrp root pyyu.txt
[root@oldboy_python /tmp ::]#ll pyyu.txt
-rw-rw-r-- root root 8月 : pyyu.txt
③ 修改权限 chmod
方法一
chmod [身份] [参数] [文件]
u(user) +(添加)
g(group) -(减去)
o(other) =(赋值)
a(all)
当前权限
-rw-rw-r-- root root 8月 : pyyu.txt
方法1
减去属主的写权限
chmod u-w pyyu.txt
查看权限
-r--rw-r-- root root 8月 : pyyu.txt
方法二
r read
w write
x execute 1 我们已知三种身份权限(属主,属组,其他人),
每种身份都有rwx的三种权限,系统还提供了数字计算权限
每种身份最低是0分,最高是r+w+x 7分
因此三种身份,最高权限是777,最低是000
-rw-rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt
因此可知pyyu.txt的权限是
属主是6 r+w(4+2)
属组是6 r+w(4+2)
其他人是4 r(4)
属主添加可读可写可执行权限
chmod pyyu.txt 属主可读可写可执行
属组可读可执行
其他人可读可执行
chmod pyyu.txt
五.软连接
ln -s 目标文件 软连接名 .存在文件/tmp/test.txt
[root@master tmp]# ls -l
-rw-r--r-- root root 10月 : test.txt .在/home目录中建立软连接,指向/tmp/test.txt文件
ln -s /tmp/test.txt my_test .查看软连接信息
lrwxrwxrwx root root 10月 : my_test -> /tmp/test.txt .通过软连接查看文件
cat my_test my_test只是/tmp/test.txt的一个别名,因此删除my_test不会影响/tmp/test.txt,
但是删除了本尊,快捷方式就无意义不存在了
六.打包,压缩
1.打包,解包
打包: tar -cvf 包名.tar 要打包的文件
解包:
tar -xvf 包名.tar
2.压缩,解压缩
tar(选项)(参数)
-A或--catenate:新增文件到以存在的备份文件;
-B:设置区块大小;
-c或--create:建立新的备份文件;
-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
-d:记录文件的差别;
-x或--extract或--get:从备份文件中还原文件;
-t或--list:列出备份文件的内容;
-z或--gzip或--ungzip:通过gzip指令处理备份文件;
-Z或--compress或--uncompress:通过compress指令处理备份文件;
-f<备份文件>或--file=<备份文件>:指定备份文件;
-v或--verbose:显示指令执行过程;
-r:添加文件到已经压缩的文件;
-u:添加改变了和现有的文件到已经存在的压缩文件;
-j:支持bzip2解压文件;
-v:显示操作过程;
-l:文件系统边界设置;
-k:保留原有文件不覆盖;
-m:保留文件不被覆盖;
-w:确认压缩文件的正确性;
-p或--same-permissions:用原来的文件权限还原文件;
-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;
-N <日期格式> 或 --newer=<日期时间>:只将较指定日期更新的文件保存到备份文件里;
--exclude=<范本样式>:排除符合范本样式的文件。
七.关闭两种linux防火墙
1.iptables 防火墙
iptables -F #清空防火墙规则
systemctl stop firewalld #关闭防火墙服务
systemctl disable firewalld #禁止防火墙开机自启
2.selinux 防火墙
.打开文件vim /etc/selinux/config .临时修改selinux,临时关闭
getenforce #获取selinux状态
setenforce #临时关闭 想要永久关闭seliunux,执行3,4步骤
.修改代码如下
SELINUX=disabled
.重启机器后,生效
八.中英文显示设置
#查看系统当前字符集
echo $LANG
locale #检查xshell crt的字符集
#命令修改字符集 中文板
# vim /etc/profile.d/locale.sh
export LC_CTYPE=zh_CN.UTF-
export LC_ALL=zh_CN.UTF- # vim /etc/locale.conf
LANG=zh_CN.UTF- # vim /etc/sysconfig/i18n
LANG=zh_CN.UTF- # vim /etc/environment
LANG=zh_CN.UTF-
LC_ALL=zh_CN.UTF- 英文版本
# vim /etc/profile.d/locale.sh
export LC_CTYPE=en_US.UTF-
export LC_ALL=en_US.UTF- # vim /etc/locale.conf
LANG=en_US.UTF- # vim /etc/sysconfig/i18n
LANG=en_US.UTF- # vim /etc/environment
LANG=en_US.UTF-
LC_ALL=en_US.UTF- .更改后查看系统语言变量
locale
九.df 查看磁盘使用量
语法
df(选项)(参数)
-h或--human-readable:以可读性较高的方式来显示信息;
-k或--kilobytes:指定区块大小为1024字节;
-T或--print-type:显示文件系统的类型;
--help:显示帮助;
--version:显示版本信息。
查看系统磁盘设备,默认是KB为单位:
df
使用-h选项以KB以上的单位来显示,可读性高:
df -h
十.tree 命令 (树状图)
tree命令以树状图列出目录的内容。 -a:显示所有文件和目录;
-A:使用ASNI绘图字符显示树状图而非以ASCII字符组合;
-C:在文件和目录清单加上色彩,便于区分各种类型;
-d:先是目录名称而非内容;
-D:列出文件或目录的更改时间;
-f:在每个文件或目录之前,显示完整的相对路径名称;
-F:在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","@","|"号;
-g:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码;
-i:不以阶梯状列出文件和目录名称;
-l:<范本样式> 不显示符号范本样式的文件或目录名称;
-l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录;
-n:不在文件和目录清单加上色彩;
-N:直接列出文件和目录名称,包括控制字符;
-p:列出权限标示;
-P:<范本样式> 只显示符合范本样式的文件和目录名称;
-q:用“?”号取代控制字符,列出文件和目录名称;
-s:列出文件和目录大小;
-t:用文件和目录的更改时间排序;
-u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码;
-x:将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,
则将该目录予以排除在寻找范围外。 tree参数
十一.计划任务
crontab任务配置基本格式:
* * * * * command
分钟(-) 小时(-) 日期(-) 月份(-) 星期(-,0代表星期天) 命令 第1列表示分钟1~ 每分钟用*或者 */1表示
第2列表示小时1~(0表示0点)
第3列表示日期1~
第4列表示月份1~
第5列标识号星期0~(0表示星期天)
第6列要运行的命令 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
* * * 每天8.30去上班 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“,,,,,” 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“-”表示“,,,,” 正斜线(/):可以用正斜线指定时间的间隔频率,例如“-/”表示每两小时执行一次。 同时正斜线可以和星号一起使用,例如*/,如果用在minute字段,表示每十分钟执行一次。
*/ * * * * /usr/sbin/ntpdate ntp1.aliyun.com 每隔三分钟执行下时间同步
实例:
所有命令一定要用绝对路径来写! #每分钟执行一次命令
* * * * * 命令
#每小时的3,15分组执行命令
, * * * * 命令
#在上午8-11点的第3和第15分钟执行
, - * * * 命令
#每晚21:30执行命令
* * * 命令
#没周六、日的1:30执行命令
* * , 命令
#每周一到周五的凌晨1点,清空/tmp目录的所有文件
* * - /usr/bin/rm -rf /tmp/*
#每晚的21:30重启nginx
21 * * * /opt/nginx/sbin/nginx -s reload
#每月的1,10,22日的4:45重启nginx
4 1,1,10,22 * * /opt/nginx/sbin/nginx -s reload
#每个星期一的上午8点到11点的第3和15分钟执行命令
3,15 8-11 * * 1 command
十二.yum 源
yum方式安装,如同pip工具,自动搜索依赖关系,自动下载解决依赖关系 yum安装的软件也是从centos官网的,yum软件仓库中下载来的
yum源的工作目录是/etc/yum.repos.d目录
并且只有在这个目录的第一层的 *.repo文件,才会被识别为 yum仓库文件
提前下载好wget工具 yum install wget -y 下载yum源1
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 下载yum源2 (我们用的大多数在源2 中)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
常用命令: yum repolist all 列出所有仓库
yum list all 列出仓库所有软件包
yum info 软件包名 查看软件包信息
yum install 软件包名 安装软件包
yum reinstall 软件包名 重新安装软件包
yum update 软件包名 升级软件包
yum remove 软件包名 移除软件包
yum clean all 清楚所有仓库缓存
yum check-update 检查可以更新的软件包
yum grouplist 查看系统中已安装的软件包
yum groupinstall 软件包组 安装软件包组
十三. nginx 的安装
yum install nginx 启动 / 停止 /重启
systemctl start/stop/restart nginx
十四.DNS 域名解析
1.linux的dns配置文件
vim /etc/resolv.conf
2.域名是什么?
就是一堆字符串,对应着服务器的ip地址
www.baidu.com
www.taobao.com
www.pythonav.com
3.hosts 文件是什么
vim /etc/hosts
本地写死了的 域名和ip的对应记录 123.206.16.61 s18666.com
4.常见的dns 公网域名服务器
114.114.114.114 144dns服务器
223.5.5.5 阿里的
223.6.6.6
8.8.8.8 谷歌的dns
vim /etc/resolv.conf
在配置文件进行配置 写入dns服务器地址,以后linux的域名解析,就去它这寻找记录
nameserver 114.114.114.114
5. 检测域名解析
nslookup 命令
[root@wangdachui tmp]# nslookup pythonav.com
Server: 114.114.114.114
Address: 114.114.114.114# Non-authoritative answer:
Name: pythonav.com
Address: 39.97.163.132 注:
pythonav.com 和 39.97.163.132 都能进入网址