注意:绿色字为注释;橙色字为注意;蓝色字为和类似的区分
目录说明
5 、 /home普通用户的"家目录"
给系统每增加一个“普通用户”的同时,都会在该目录为该其创建一个文件目录
代表该用户的“家目录”,用户后期使用系统的时候会首先“进入”其家目录
家目录名字默认与当前用户名字一致,用户对家目录拥有绝对最高的权限。
6 、 /root该目录是root管理员的家目录,root用户登录系统后首先进入该目录
7 、 /var全称:variable 可变的、易变的
该目录存储的文件经常会发生变动(增加、修改、删除)
经常用于部署项目程序(php)文件
/var/lib //服务产生的数据放这
/var/log //服务产生的日志
8 、 /boot系统启动核心目录,用于存储系统启动文件
9 、 /etc系统主要配置文件目录
例如: /etc/passwd 用于存储用户信息的文件 /etc/group 用于存储组别信息的文件
/etc/init.d //启动脚本位置
/etc/sysconfig //初始化环境配置文件位置
10 、 /lib全称:library 系统资源库目录
11 、 /selinux全称: secure enhanced linux安全增强型linux
对系统形成保护,会对给系统安装软件时有干扰作用
12、proc
cat -n /proc/cpuinfo //看服务器cpu
cat /proc/cpuinfo |grep name|cut -f2 -d: | uniq -c //*8 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l //查看物理CPU的个数
cat /proc/cpuinfo |grep "processor"|wc -l //查看逻辑CPU的个数
cat /proc/cpuinfo |grep "cores"|uniq //查看CPU是几核
总结一般情况下: /bin:系统的工具程序 /usr/bin:提供给管理员和一般用户使用的程序 /usr/local/bin:一般是用户安装的程序 |
快捷键
ctrl + c 强制终止当前命令
ctrl + l 清屏
ctrl + a 光标移动到命令行首
ctrl + e 光标移动到命令行尾
ctrl + u 从光标所在的位置删除到行首
ctrl + z 把命令放入到后台执行
ctrl + r 在历史命令中搜索(搜索的结果是最后一个包含xx指令的命令)
curl rate.sx/btc #好玩 酷炫的效果
常用指#令
https://www.cnblogs.com/linuxprobe/p/5381538.html #*lvm相关的
* 怎么知道/data在哪个分区中?(下图finebi的)
指定目录的 就是按 指定目录的来,没有指定目录的都在 /
*正常的话 应该是data目录单独一个盘 存储 网站的数据 日志 之类的,可以自动扩容
下图其他人的
用户、组、权限、用户相关
为什么需要用户??每运行一个软件,都有一个用户与之对应(当然安装软件前就创建了)
总结:先创建组 后创建用户
用户:
/etc/passwd(用户的信息)
用户id代表的意义:
0 表示管理员(root)
1 - 500 表示系统用户
501 - 65535 表示普通用户
不同的 Linux 发行版,这些数字可能不一样
/etc/shadow(用户的密码,冒号是分隔符)
1、useradd //【增】添加用户;-g 用户组 -s不允许其登录、-M 不生成家目录
useradd -g www -u www -M -s /sbin/nologin
2、usermod //【改】修改用户信息,组编号等-g
> usermod -g 新组编号-u新用户编号-d新家目录-l新名字username
注意:家目录修改后需要手动创建,不同于创建用户家目录设置
创建用户时设置家目录,该目录会自动创建
修改用户家目录时,该目录不会自动创建(需要手动创建)
3、userdel //【删】删除用户-r的同时删除家目录
> userdel -r username //删除用户的同时也删除其“家目录”
4、passwd 新添加的账户名 //敲回车,就会让输入密码。为其设置登录密码
组(多个用户放在同一个组):
/etc/group(用户组的信息)
/etc/gshadow(用户组的密码,都是空的,用户组不需要密码)
1、groupadd //【增】添加组
> groupmod -g gid -n newname groupname
2、groupmod //【改】修改组
3、groupdel //【删】删除组,注意:只有空组(内部没有用户信息)才允许删除
权限:
连接:是指软 + 硬连接 的数量
文件的更新时间:该目录下有任何一个文件修改了,这个时间都会更新
1、chmod 777 文件或目录名//设置权限(传统权限分组)
1.1、"字母相对方式"设置权限
权限: r读w写x执行
用户: u主人 g同组 o其他组
chmod u+/-rwx, g+/-rwx, o+/-rwx 文件
不同用户通过",逗号"分隔
在同一个用户里边,+/-只能用“一个”
"rwx"在同一个用户里边可以设置一个或多个
"ugo" 每次权限操作可以设置一个或多个用户
>chmod u+rw filename //主人增加读、写
>chmod g-rx filename //同组删除读、执行
>chmod u-w,g+x filename //主人删除写,同组增加执行
>chmod o+w,o-x filename //其他组用户“增加写、删除、执行”
1.2、 "数字绝对方式"设置权限(把原来的权限替换掉,因为是绝对方式)
读:4 ; 写:2 ; 执行:1 ; 没有权限:0
> chmod -R 777 目录名
2、setfacl //acl(对一个人、一个文件)精确划分权限http://blog.csdn.net/qwq_qaq/article/details/54882203
3、chown 用户名:用户组 目录名 //将指定文件/目录的拥有者改为指定的用户或组
4、chgrp //命令用来改变文件或目录所属的用户组
用户相关:
2、su 切换用户
> su - root //效果同su
> su 普通用户名称 //如果你当前是超级管理root向普通用户切换
> exit //当前用户退回到之前用户
su多次使用,用户会“累加”,建议“su” 和 “exit”匹配使用
3、whoami //查看当前登录用户
4、exit 或 ctrl+d //退出到之前用户
5、id //当前用户(活跃用户)
查看目录 || 文件
目录切换:
1、> cd 目录名字 //切换到哪个目录
2、> cd / //切换到根目录
3、> cd .. //向上级目录切换
4、> cd ~ //快速切换回自己的家目录
查看目录下的文件信息:
1、> ls //list查看当前目录下有什么文件
2、> ls -l 或ll //*list -list通过详细内容形式查看目录下的文件内容
https://blog.csdn.net/LEON1741/article/details/82386520 #*详解ll指令显示结果分析
ll | grep "^-" | wc -l #*统计当前目录下,有多少个文件
ll | grep "^d" | wc -l #*统计当前目录下,有多少个目录
ll -R | grep "^-" | wc -l #*统计当前目录下(包含子目录中的),有多少个文件
ll -R | grep "^d" | wc -l #*统计当前目录下(包含子目录中的),有多少个目录
*解析:grep "^-" 是个正则,查找-开头的行;-R 是大写
ll -ht #*按时间排序,最新的在最上面
3、 > ls 目录 //查看指定目录下文件名字信息
4、 > ls -l 目录 //以详细列表形式查看指定目录下文件名字信息
5、 > ls -a //list all查看全部文件,包括隐藏文件
6、 > ls -al //list list all以详细列表形式查看全部文件,包括隐藏
文件:
7、 > ls -i //查看目录下文件名字的索引号码(id号)
-h //人性化显示(显示文件大小)
-d //查看目录属性
操作目录 ||文件
1、cat //查看文件内容
> cat filename(需要操作的文件名) //在终端显示文件全部内容
-n 显示的时候带行号(空行也编号)
-b 显示的时候带行号(空行不编号)
> more filename //通过"敲回车"方式从第一行逐行查看文件内容;不支持回看;q键 退出查看
> less filename //"上下左右"键方式查看文件各个部分内容;支持回看,q键 退出
> head -n filename //查看文件“前n行”内容
> tail -n filename //查看文件“末尾n行”内容
-f 当文件增长时,输出后续添加的数据;
和grep一起使用
> cat -n log.xml | grep -C 5 'subscribe' //查找log.xml文件中,有subscribe关键词的行,并显示其上下5行
-C上下5行
-B前5行
-A后5行
2、head -5路径/文件名//查看前5行
3、tail//查看后5行
tail 列出尾行 -n 指定行数 -f 动态查看数据写入
locate //也是查找文件,效率上会比find快一点
4、find 路径 -type f -name文件名//查找文件‘文件名*’ #模糊查找
① name 根据文件名字查找指定的文件
find 目录 -name 完整文件名称
> find / -name passwd[完整名称] //"递归遍历"系统全部目录查找名字等于passwd的文件
> find /etc -name passwd[完整名称] //递归遍历/etc及内部所有目录查找 名字等于passwd的文件
> find 目录 -name "an*"[部分名称] //模糊查找文件名字以an开始的
② 对查找的目录层次进行限制
-maxdepth //限制查找的最"深"层次
-mindepth //限制查找的最"浅"层次
> find / -name passwd -mindepth 3 -maxdepth 4 //在3到4个层次的目录里边定位passwd文件
③ 根据文件大小进行查找
size 单位
> find ./目录路径 -size 50c //在当前目录下查找大小[等于]50个字节的文件
单位:
数量 单位 实际大小
100 -------> 512字节:【100*512字节】
50c -------> 字节 : 【50字节】
50k -------> 千字节: 【50*1024字节】
50m -------> 兆字节 【50*1024*1024字节】
> find ./ -size +50c //在当前目录下查找大小[大于]50个字节的文件
> find ./ -size -50c //在当前目录下查找大小[小于]50个字节的文件
④ 查找10天前修改的文件(源慕课4-3,12分开始,17分)
⑤搜索文件(效率比find高,比find搜的快)源自慕课4-1(视频上的系统是6.3)
> find 文件名 //他在/var/lib/mlocate后台数据库(默认每天更新1次)中搜索,所以新建的他搜索不到。
> updatedb //强制更新数据库后就可以搜索到了
5、grep '要查找的内容' 要查找的文件名(绝对或相对路径) //【查行】支持正则
-v //取反
-E //能使用扩展正则表达式
> grep -Ev '^#|^$' nginx.conf //去掉配置文件中,以#开头的,和空行。用cat -A就能看出来空行是$
> grep 'sbin' /etc/passwd //在passwd文件中查找sbin字样,会把sbin所在行的内容都输出(在单个文件中查找)
> grep -rn 'error_log' * #查找当前目录中所有文件内容包含error_log的文件。
- r是递归查找
- n是是显示行号
*:表示当前目录所有文件,也可以是某个文件名
>cat -n fanruan.log | grep -E 'group load | table load fail | build all' //*在同一个文件中,同时模糊查找多个不同行的关键词。如 包含group load的行,包含table load fail的行,包含 build all的行
和find的区别:find是查找文件在哪里,grep是查找文件中的xx些内容。此查找不是在vim编辑器中查找vim查找内容用的是/和?
6、awk '{print $1}' 文件名 //【查列】输出第1列的数据。英文单引,支持正则。
-F '分隔符' //默认的分隔符是空,以什么分隔符进行列和列的切分,英文单引
7、sed -i 's#no#yes#g' 要替换的文件名 //【增改删】不使用vim的替换(不打开文件情况下的替换),支持正则。
注意:和vim的替换差不多,vim中是:%s#no#yes#g //将整个文档的no替换成yes
总结:awk、grep、sed三剑客,都支持正则
6、wc 文件名 //统计
-c #统计字节数 -w #统计单词数 -l #统计行数
> grep '80.82.70.187' /var/log/nginx.access.log | awk '{print $1}' | wc -l //先取行,在取列,最后统计。统计80.82.70.187有多少个
7、du -h //查看文件或目录的大小以k m的形式查看文件占据磁盘空间大小
8、df -h //磁盘的使用情况
9、du -sh webapps/ //查看webapps目录大小
对文件/目录的【增删改】
1、mkdir 目录名//【增】新建-p递归新建
2、touch 文件名//【增】新建
3、mv 原目录路径 新目录路径//【改】移动(目录文件均可操作)
4、rename //修改文件名
5、cp 源目录路径 新目录路径//【改】复制(目录文件均可操作)-r是给目录用的,递归复制
6、rm -rf //【删】递归删除目录和文件
7、unlink //【删】文件名;只能删除文件
8、echo 内容 >路径文件名//【改】覆盖追加2个>>换行追加(不覆盖),内容复杂的话,用引号引起来,单词用空格间隔
9、diff 文件a 文件b //对俩个文件进行对比,输出的是a和b文件不一样的地方
安装和解压
1、yum install 软件包名-y #安装软件包
yum search 软件包不精确的名字 //在yum中查找软件包
yum list installed //yum中已安装的包
2、rpm 傻瓜式下一步安装软件
4、zip压缩和解压
范例:
zip命令可以用来将文件压缩成为常用的zip格式。unzip命令则用来解压缩zip文件。
4.1、 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip:
yum install zip -y #*安装zip工具
# zip -r yasuo.zip abc.txt dir1
4.2、我下载了一个yasuo.zip文件,想解压缩:
yum install unzip -y #*安装解压zip的工具
unzip yasuo.zip 或者 unzip rewrite.zip -d ../ #解压到当前目录,不用先创建文件夹
unzip mydata.zip -d mydatabak/ #*当前目录下面的mydata.zip解压到mydatabak目录里面
按A是全部替换,y是一个一个替换
传输
1、lrzsz(rz)上传 、下载(sz)
前提是要安装lrzsz才可以使用,这两个指令:
yum install lrzsz -y //执行这句就安装了
上传示例:rz敲回车 //就弹出了选择文件的框,选择完点确定即上传
下载示例:sz要下载的文件名 //弹出下载到哪里
2、ftp 文件传输
3、scp远程拷贝(俩台服务器之间传文件)
scp -r ./lnmp.zip @112.xx.60.46:/ #将lnmp.zip发送到112.xx.60.46服务器上,发送成功后,文件保存在112....服务器的根目录下
注意:给自己的服务器理解为A,对方(112...那台)理解为B
@前面是B的用户名,不写的话,默认是root
@后面是ip
:后面是保存到B服务器的哪个地方
下图是在A服务器上输入指令
当A服务器执行该指令时,会给B服务器踢掉线
B服务器会显示,下面2行
Connection closing...Socket close.
Connection closed by foreign host.
上面是阿里云-》阿里云上传。
阿里云-》腾讯云上传,腾讯云就不会被踢掉线
4、wget 网址 //下载...软件等(网址里面是啥就下载啥)
5、github clone 网址 //从github上下载(你需要的类库,下载那就有个克隆,给那网址粘过来)
git
clone
https:
//github.com/VundleVim/Vundle.vim.git
~/.vim/bundle/Vundle.vim
注意:最后面红色的,是给下载到哪个目录下,这里下载到了家目录
6、curl 网址 //发请求的(相当于文字界面的浏览器吧)
其他
1、netstat -nltp //查看端口
2、ifconfig //网络配置,查看ip
3、hostname //显示主机名
4、help //指令帮助
5、pwd //当前所在的位置
6、clear //清除之前的指令
7、ln -s 源文件名 软连接名 //软连接(快捷方式)源文件使用绝对路径。目录和文件都可以做软连接。删除源文件后对应的软连接变为无效链接,闪红色字体
8、ln -d 源文件名 硬链接名 //硬链接(多个备份)源文件使用相对路径。目录不能做硬链接。同一个源文件的硬链接,不能跨区(必须在同一个硬盘,同一个分区)里面
9、tree //以结构树状显示(需要单独安装)http://www.cnblogs.com/leijiangtao/archive/2014/06/08/3776280.html
10、which //查看指令对应的可以执行程序文件位置
11、cat /etc/redhat-release //查看contos的版本号
date 日期
cal 日历
bc 计算器
man 查看帮助
fdisk -l 查看磁盘分区
echo 输出
uname -a #*查看系统内核版本号
x86 ======> 32位
x86_64 和 x64 以及AMD64 ======> 都是64位
uname -r 显示的意思
2.6.32-642.el6.x86_64
2: —->主版本号
6: —–>次版本号 6 表示稳定版本
32: —–>修订版本号,表示修订次数
*12、查看即时网速
注意:内网就没必要看了,内网很快的。如果慢尝试换下浏览器,有可能是浏览器的网络延迟导致的
安装:
yum install -y gcc
yum install -y gcc-c++
yum install -y ncurses-devel
wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz
tar zxvf nload-0.7.4.tar.gz
cd nload-0.7.4
./configure
make
make install
使用:
1、nload -i 100 -o 100 //-i是输入动画 -o是输出动画 100是动画的纵轴最大100kbit/s
2、nload -m //同时查看多个网卡的流量情况
3、nload eth1 //nload默认的是eth0网卡,切换监测eth1网卡的流量
4、nload //没有动画
效果:
服务管理
1、图形模式与命令模式进行切换,只有root用户可以用
># init 3 //图形 向 命令模式切换
># init 5 //命令 向 图形模式切换
2、runlevel //查看运行级别
进程管理
* who #查看目前都谁连着服务器呢
* service php-fpm restart #重启php
10、lsof -i //列出符合条件的进程,如 lsof -i | grep my (条件是符合my的)
11、killall nginx//杀进程(全杀)
12、pkill//按照进程名杀死进程和killall差不多
13、top //性能分析工具,主要用来判断服务器的健康状态
http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html
http://blog.csdn.net/qq_33862644/article/details/79292770
14、ps//当前运行的那些进程
ps -aux //查看系统中的所有进程,主要看cpu占比
ps -le //查看系统中的所有进程,主要看优先级
http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html
http://blog.csdn.net/qq_33862644/article/details/79292770
15、kill 进程号 //删除执行中的程序或工作(单杀)
http://man.linuxde.net/kill
http://blog.csdn.net/qq_33862644/article/details/79292770
16、pkill -9 -t tty //根据tty,T用户,先拿w看一下在T用户
16、pstree//以树状图展示进程之间的关系
http://blog.csdn.net/qq_33862644/article/details/79292770
17、帮助指令
> man ls //和vi编辑器似的,进入之后直接输入 要查询的指令 回车就ok,按n进入下一个,按shift上一个(man的级别:6分钟开始)
> man -f 命令 //某个指令都有哪些帮助级别
> man -k 命令 //和这个命令所有有关的帮助
18、其他帮助
>ls --help //中文的帮助
19、shell //内部命令帮助(4分钟开始
20、nice //修改进程的优先级(不能修改已存在的进程)
21、renice //修改进程的优先级(可以修改已存在的进程)
22、& //放入后台
23、ctrl + z //*放在后台暂停
功能:将一个正在前台执行的命令放到后台,并且处于暂停状态
24、jobs //*查看后台中执行的任务
jobs -l选项可显示当前终端所有任务的PID,jobs的状态可以是running,stopped,Terminated。+ 号表示当前任务,- 号表示后一个任务。
注意:如果装了2个php,一定要在当前使用的php下面执行(如 /www/php/bin/php),否则 555555555555555
那工作号,不是pe的命令,写错了 是ps -aux执行令的pid
25、kill -9 工作号 #*结束后台任务的进程(会显示已杀死,并不立即消失。等一会自己在用jobs查看)
25、fg %工作号 //*将后台暂停的工作,恢复到前台继续运行
如果后台中有多个命令,可以先用jobs查看jobnun,然后用 fg %jobnum 将选中的命令调出。
26、bg %工作号 //*将后台暂停的工作,恢复到后台继续运行
如果后台中有多个命令,可以先用jobs查看jobnum,然后用 bg %jobnum 将选中的命令调出继续执行
27、logout //退出当前终端
28、vmstat //监控系统资源
29、free -m //*以兆来查看内存使用情况
实际上来说,程序占用的真正内存就是:- buffers/cached 的数值。
所以看系统,真正已经用的内存数:used-(buffers+cached)的值。
真正未用到的内存数:free+buffers+cached 的值。
30、uptime //查看cpu的平均负载
31、lsof | more //所有进程调用的文件
*32、pidstat - 监控并统计Linux进程的数据(如 i/o的读写)
yum install sysstat -y //安装
> pidstat -d -p 8472 //查看某个进程的i/o读写,注意:这个pid是用pidstat查看到的,看mysqld的
参考:https://www.linuxidc.com/Linux/2014-11/109609.htm
定时任务
指令请参考:http://blog.csdn.net/shenlingsuifeng/article/details/50888061
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
crontab -l -u root //查询root用户下都啥定时任务
案例:定时访问某个url
查看crontab定时任务工具是否开启,请参考:http://www.bubuko.com/infodetail-2234008.html
//也可以用这个代码,做测试。注意:上级目录是否有权限
$content = "时间:".date('Y-m-d H:i:s',time()).PHP_EOL;
file_put_contents('/home/wwwroot/xg_test/time.txt',$content,FILE_APPEND);
shell
管道和重导向|、>、>>、<
重导向就是使命令改变它所认定的标准输出。
“>”可将结果输出到文件中,该文件原有内容会被删除(相当于覆盖),
“>>”则将结果附加到文件中,原文件内容不会被删除(相当于追加)。
“<”可以改变标准输入(输入重定向)一般导入文件用,如 软件升级包。
如: cat data1.txt>>data2.txt(将data1.txt文件的内容加在data2.txt文件的后面)
管道“|”可将命令的结果输出给另一个命令作为输入之用(相当于 | 前面的结果,当做 | 后面的输入):
man mtools|grep mbadblocks (在mtools的帮助中搜索包含“mbadblocks”的句子)
man mtools|less(把输出用管道导入到一个叫做 less 的工具。less 是一个分页工具,它允许你一页一页地查看信息。)
连接符号:“;”
当有几个命令要连续执行时,我们可以把它们放在一行内(在1行内执行多个命令),中间用“;”分开。
mkdir myfile;cp /tmp/myfile.txt myfile(先建立一个目录myfile,然后把myfile.txt拷贝到新建的目录中)
&& 和 ||
注意:||的短路效果
示例:
() 命令组合
语法格式如下:(command1;command2[;command3...])
shell 提供了两种方法(() 和 {})实现将几个命令合作一起执行,代替独立执行。这种方式并不能控制命令是否需要执行,仅是将多个单独的命令组合在一起执行,最终命令的返回值将由最后一条命令的返回值来决定。
1 一条命令需要独占一个物理行,如果需要将多条命令放在同一行,命令之间使用命令分隔符(;)分隔。
执行的效果等同于多个独立的命令单独执行的效果。
2 () 表示在当前 shell 中将多个命令作为一个整体执行。需要注意的是,使用 () 括起来的命令在执行前面都不会切换当前工作目录,也就是说命令组合都是在当前工作目录下被执行的,尽管命令中有切换目录的命令。
3 命令组合常和命令执行控制结合起来使用。
示例 4
malihou@ubuntu:~$ rm ~/Desktop/1.txt || (cd ~/Desktop/;ls -a;echo "fail")
在示例 4 中,如果目录 ~/Desktop 下不存在文件 1.txt,则执行命令组合。
通配符 ? * [] [-] [^]
其他特殊符号
------------------------------------------------------------------------------------------------------------
文件系统
1、mount //挂载
2、umount //卸载
3、fsck //检查并且试图修复文件系统中的错误 http://man.linuxde.net/fsck
4、ulimit -n 1024 //文件描述符。默认可以同时打开1024个文件。*临时修改的话,将该配置写入到/etc/profile中
https://blog.csdn.net/shaobingj126/article/details/7194393/ #*使用ulimit设置文件最大打开数
系统
3、shutdown -h //关机
4、># poweroff //关机(关机了开机就没法开)
5、reboot //重启(要小心点,服务器好多人一起用))
6、># shutdown [选项]时间(源慕课7-1)
选项:-c //取消前一个操作命令
-h //关机(不能关)
-r //重启
7、>#exit //退出登录
网络应用
1、curl //http的上传和下载 http://www.cnblogs.com/duhuo/p/5695256.html
2、telnet //远程登录服务器的命令(同ssh)http://www.cnblogs.com/peida/archive/2013/03/13/2956992.html
3、mail //发邮件指令
4、elinks //纯文本界面的www浏览器http://man.linuxde.net/elinks
5、host //域名查询(测试域名是否正常工作)http://man.linuxde.net/host
常用工具
6、ssh //远程登录服务器的命令http://os.51cto.com/art/201205/335402.htm
7、screen //切换屏幕的(init3切换到命令行init5切换到图形界面)http://man.linuxde.net/screen
10、who //当前登录的用户信息
9、date //设置系统时间日期http://man.linuxde.net/date
软件包管理
10、apt-get //乌班图安装软件http://www.cnblogs.com/274914765qq/p/4568291.html
安全
c安全ontos7指令
1、防火墙:
*工具一:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
systemctl start firewalld.service #开启防火墙
注意:关闭防火墙后就不安全,正确的做法是,外部需要访问哪个端口,就开放哪个端口
*工具2:
service iptables stop //临时关闭
service iptables start //临时开启
service iptables status //状态
2、服务器被攻击,用lastb指令查看;
解决方法:直接改ssh的默认登录端口;改 登录名;禁止各个软件的root账户登录
在linux系统中,last与lastb命令用来列出目前与过去登录系统的用户相关信息。指令英文原义:
last, lastb - show listing of last logged in users
单独执行last指令时,它会读取位于/var/log/wtmp的文件,并把该给文件的内容记录的登录系统的用户名单全部显示出来。
单独执行lastb指令,它会读取位于/var/log/btmp的文件,并把该文件内容记录的登入系统失败的用户名单,全部显示出来。
第一列信息:用户名,或者显示reboot(启动或者重启操作在这里会记录成reboot)
第二列信息:终端位置,pts/0 (伪终端或虚拟终端) 意味着从诸如SSH或telnet的远程连接的用户。
tty (teletypewriter) 意味着直接连接到计算机或者本地连接的用户,如果是启动或者重启操作,这里会显示成system boot
第三列信息:登录ip或者内核,如果你看见:0.0 或者什么都没有,这意味着用户通过本地终端连接。
也有在状态中显示内核版本的信息,笔者猜测这些记录应该是属于系统的操作,如开机,关机,重启等操作
第四列信息:开始时间,其中的日期格式为date +"%a %b %d"
第五列信息:结束时间(still login in 还未退出 down 直到正常关机 crash 直到强制关机)
第六列信息:持续时间
================================================================================
last命令的参数补充说明(以下参数同样合适lastb命令):
参 数:-a 把从何处登入系统的主机名称或IP地址,显示在最后一行;
-d 将IP地址转换成主机名称。当用户从远端而非本地主机登入系统时,所记录的将不仅是主机名称,还包括该远端主机的IP地址。
默认情况下会用IP地址来显示远端的主机,使用这项参数可将其换成主机名称;
-f 指定记录文件。预设last指令会去读取/var/log目录里的btmp文件;
-n 设置列出名单的显示列数,如果你只想查询最后登入系统的10位用户名称,可将显示列数设成"10",
想查询最后的30位用户,则设为"30",依此类推;
-R 不显示登入系统的主机名称或IP地址;
-x 可显示系统关机、重新开机,以及执行等级的改变等信息。
VIM编辑器
客户端xshell连接linux中vim不能正常使用小键盘的问题
xshell:文件--属性(properties)->(终端)Terminal中的(终端类型)Terminal Type 修改为linux 或者ansi就可以正常使用小键盘了。---记住一定要重新打开窗口进入,才能生效
1)命令模式-->编辑模式切换(插入/insert)
a "光标"向后移动一位
i "光标"和"内容"没有变化
o "新"起一个空白行
s "删除"光标所在字符
2)尾行模式作用(和命令模式一样,都需要先按下esc)
:q quit退出编辑器
:wq write quit 保存并退出
:w write 保存
:q! 强制退出(不保存)
:w! 强制写保存
:wq! 强制保存退出
:set number 或 set nu //给编辑器设置行号
:set nonumber 或 set nonu //取消行号设置
:数字 //光标跳转到数字所在行
//内容替换 "cont1"被替换为"cont2"
:s/cont1/cont2/ //把光标所在行的"第一个"cont1替换为cont2
:s/cont1/cont2/g //把光标"所在行"的全部cont1替换为cont2
:%s/cont1/cont2/g //把"整个文档"中的全部cont1替换为cont2
3)命令模式操作
① 光标移动
a.字符级
上(k) 下(j) 左(h) 右(l)键
b.单词级
w word下个单词首字母
e end下(本)个单词尾字母
b before上(本)个单词首字母
c.行级
$ 行尾
0 行首
d.段落级(两部分内容中间有空行,彼此成为段落)
shift + { 上 //(本)个段落首部
} 下 //(本)个段落尾部
e.屏幕级(不给翻屏)
h 屏幕首部
l 屏幕尾部
f.文档级
G 文档尾行
:1 或 gg 跳转到文档第一行
6gg 跳转到第6行(先按个6 在按gg)
② 内容删除
dd 删除光标所在行
n+dd 包括当前行在内向下删除n行内容
x 字符级删除,删除光标所在字符
cw 光标所在字符删除至单词结尾(是删除单词的便捷方式)
同时会进入编辑模式
③ 内容复制
yy 复制光标所在行
n+yy 包括当前行在内向下复制n行内容
p 对复制(删除)好的内容进行粘贴操作
④ 便捷操作
/要搜索的字符串 //在文档首 向下搜索,小写n(next)下一个;大写N(功能和向上搜索差不多)
?要搜索的字符串 //在文档尾 向上搜索
u // undo撤销,从文件打开后的所有操作都可以撤销
.(点) //重复执行"最近"的一条指令
ZZ //直接退出
:%s#no#yes#g //将no替换成yes,速记是冒号百分号sg,然后中间加3个#
批量添加注释:
按ctrl + v,显示这个(在按下这个就没了)
用下键进行选择,选择好后
shift + i 进入(编辑模式)
输入#号
按esc,就ok了
批量删除注释:
按ctrl + v
用下键进行选择,选择好后
按d(delete),就ok了
shell
1、永久别名
> vim ~ .bashrc #写入环境变量配置文件(家目录下的一个隐藏文件)
语法:alias 别名='真实命令名'
命令生效的顺序:绝对路径/相对路径 > 别名 > bash内部命令 > $PATH目录中的命令
注意:除非是想覆盖系统中的指令,否则别名不要和系统中的重名
2、source 要重载的配置文件 //如果不用该指令,那么就要重启
3、history //查看历史命令
选项:-c #清空历史命令 -w #把缓存中的历史命令写入到文件家目录下的隐藏文件.bash_history中(每个用户保存的不同)
注意:.bash_history中保存的文件和直接输入history命令看到的不一样,因为.bash_history中保存的文件是我上次登录,正确注销后保存的。加-w是强制写入
历史命令默认保存1000条,如需修改,可在环境变量配置文件/etc/profile中修改