常用命令--数据流、管道
重定向

我们键盘输入echo "helloworld"会把键盘输入写到内存,程序将内存输出到屏幕作为显示,这是默认的输出流,什么是重定向呢,就是改变输出流的流向,让其输出到文件中


我们使用>输出,使输出流变成helloworld.txt,这样

我们在给txt重定向内容,会发现内容被覆盖

我们用两个大于号>>就可以实现追加(开头另起一行)

注意:要想重定向必须得有输出
管道

图中1,2号都有输入输出。1号管道的输出作为2号的输入

比如ls -l /会显示根目录的很多内容,我们想将这部分内容用分屏显示,就可以
ls -l / | more
建立链接
ln 命令

先来介绍下软连接和硬链接
软连接 好比是windows的快捷方式,我们建立新的连接存储2.txt的地址,如果删除链接,文件并不删除,但如果删除文件名,则链接失效。
硬链接就是给一个数据起了多个文件名,如果我们删除其中一个文件名,但是其他文件名依然可以访问数据
软链接演示 ln -s 源文件 链接文件
图中会看出ls -l链接文件的表示

硬链接 ln 源文件 链接文件 (即不加 -s)
ls -l后发现硬链接并没有软连接提示,而且大小和源文件大小一样,但其实他们都是一个区域

我们可用cat查看软硬链接,内容和源文件一样,通过软硬链接修改链接文件内容也同样都修改了源文件
文件搜索
文本内搜索grep
注意这里是文本内部
grep [-option] 查询词 文件名
下图中我们搜索worker(其实是可以用单引号字符串的),会发现找到2个,而有个W是大写,所以这里搜索是大小写敏感的,会显示满足的结果行,并对满足部分标红

我们如果想忽略大小写呢,用grep -i 查询词 文件名

如果我们想显示行号用grep -n 查询词 文件名

如果想获得没有查询词的结果用grep -v 查询词 文件名 (结果没有红色)

如果我们想搜索以w开头的,可以用grep 正则(后面章节详细介绍)
示例grep -n '^w' test.txt
计算机中查找文件find

find ./ -name 文件名 查找当前目录下文件名得到文件
find ./ -name '*.txt' 查找当前目录下所有后缀为.txt文件 注意有引号

如下我们是当前文件下找到所有a加上一个字符的文件名开头的txt,这里?相当于正则只匹配一个字符

find ,/ -size 2M就找2M大小的,+2M,找大于2M的,-2M找小于2M的

如果是找大于15M小于30M,我们要2次-size

归档和压缩

归档管理tar
-f选项和其他选项组合时必须放最后



我们用tar -cvf 紧跟着就是打包后文件名 然后是那些要被打包的文件

我们打包后就可以删除源文件,然后通过tar -xvf 1-2.tar还可以得到1.txt,2.txt
压缩打包 和 解压解包
之前的选项加上-z

我们压缩出来的文件一般后缀是.tar.gz是linux默认的压缩文件后缀(gz表示gzip)

如图我们建立了一个d目录,我们想将文件解压到这个目录中去呢。末尾加上 -C 目录 选项
tar -zxvf 1-2.tar.gz -C d

文件压缩解压

文件夹压缩要加-r选项 zip -r a.zip a
解压直接unzip a.zip

权限管理
我们ls -l 可以看到权限相关的信息,之前我们也介绍了

我们之前也说了,一行2个demo,分别是用户,和文件所在组,前10个字符,第一个-表示文件,l表示链接,d表示目录,而后9个我们之前没有写,这9个字符又分为3组,分别表示文件所有者权限,文件所属组权限,其他用户权限(linux默认你创建一个用户,创建一个用户重名的组)

这里又通俗的分析了文件所有用户,组,其他用户,比如班长买了个足球,那他可以自己踢也可以自己拿刀子扎,班长对于足球就相当于文件拥有者和文件的关系(绝对权限),班长在班里,这个班就是组,班长授权本班同学可以踢足球,但是不运行本班同学损坏足球,而其他班就相当于其他用户,班长可以授权不让你踢,更别提让你损坏

我们的rwx-都是什么意思呢,如图,r可读,w可写,x可执行,-没权限

我们又可以把文件拥有者简写为u (user) 同组用户 g (group) 其他用户 o (other)
额外还有个所有用户a (all)
权限修改
chmod命令
chmod u/g/o/a +/-/= rwx 文件名 给u或g或o或a +增加 权限 -移除权限 =赋予右侧权限
比如我们给1.txt的user加上x权限(原来只有rw)chmod u+x 1.txt
此时1.txt在ls 显示时就变成了绿色(可执行)
如果是去掉chmod u-x 1.txt

如上图,我们还可以通过数字来赋予权限,4代表r,2代表w,1代表x,0代表-,这样实际权限就变成了每个数字的和,我们就可以直接chmod 三位数 文件名 给文件设置权限(777是最高权限)

当我们把权限误设为000则无法打开,记得chmod修改,当只有r权限时,用户gedit会看到文件是只读的,你修改内容也无法保存
再说我们修改目录权限,默认是不修改内部权限的,我们想将内部文件目录设置跟目录一起改动用
chmod 三位数 -R 目录 (注意是-R大写)
用户管理命令
命令su
我们cd /到根目录,尝试touch 文件,会发现权限不够,根目录默认是超级管理员的目录,默认下是不允许普通用户操作

于是我们使用sudo touch 1.txt临时提升权限,会提示输入密码,我们就成功创建了1.txt在根目录,但是我们再次touch没用sudo还是会提示没权限,这就是临时的含义,但是再次sudo不用提示密码
ls时也能看到用户和组为root

我们也可以直接切换到管理员账户 sudo -s,会提示输入密码(之前未输入过的话),你会发现左侧用户已经变成了root。其中美元符号也表示你是个‘保安’身份,而井号表示是超管身份

我们还可以用su 用户名 切换账户,如果是su root 密码要输入的是root的密码而非自己用户的密码

修改密码passwd
我们可以用passwd修改密码, passwd 用户 如果修改当前用户,可以不输入用户名,2次输入一致成功修改密码
如果是普通用户登录,修改普通用户密码。必须改后比之前长才行。那我们就是想把密码改短呢,可以切换到root身份,然后修改用户密码变短(root不会问你原来密码- -)
退出登录exit
我们打开终端,默认就是当前用户demo。用exit就可以退出登录,终端关闭
我们如果我们打开终端切换到root,再su回demo,需要3次exit才能退出,这是因为Linux用栈(类似一个井,后入先出)存储登录,这样栈结构就分别是demo,root,demo。而exit就相当于出栈,第一次demo出去。然后再root.demo。最后栈空退出终端。

查看登录用户who
会得到当前登录server的用户及位置,比如我们就可以通过ssh尝试登录虚拟机,这里就得提下我自己的使用过程中的坑(首先,教程开始并没有告诉需要装什么,你要把虚拟机当服务器,远程登录他,那就得给虚拟机安装ssh server,命令sudo apt-get install openssh-server,然后sudo /etc/init.d/ssh start开启sshd服务。然而这样还没完,比如我们电脑操作系统是windows,我开始装了openssh,但是好像用起来一直提示no kex alg,后来是靠大哥提示安装putty,在putty界面里成功ssh,具体输入内容是ssh 用户名@ip地址 ,这个ip地址可以在连接信息里看到),ssh后,输入who就可以看到虚拟机和ssh登录的2个用户

who -q显示登录用户名,数量
who -u额外显示登录时间

关机重启
shutdown关机命令
-h now立刻关机
-r now立刻重启
shutdown 时间(比如15:00)到时间关机,远程ssh登录的会得到提示
-c 取消关机,这时ssh登录也会提示关机取消
shutdown +20 让20分钟后关机

reboot重启(尽量使用shutdown)
重启可以,关机尽量避免,当然大的云服务器已经有了远程开机关机
软件安装卸载
三种软件安装方式,make install 、 deb包方式、apt-get 几种

makeinstall
比较麻烦,亲力亲为
dpkg安装deb包
要安装依赖包
sudo dpkg -i 包名(.deb)

apt-get
一般格式 sudo apt-get install 软件名(但是必须有软件源或联网,软件源必须配置好,需要修改etc/apt/source.list文件)

卸载软件 sudo apt-get remove 软件名
SSH远程登录
比如说我们的服务器在很远的地方,服务器安装ssh server,我们在电脑上就可以ssh远程登录操作服务器

服务器要sudo apt-get install openssh-server安装sshserver,装完了就允许远程登录了
用户登录命令ssh 用户名@服务器IP地址 (客户端我用的是putty)
远程拷贝下载SCP

上传 scp 本地路径 用户@服务器地址文件路径(视频是mac本,直接就能sch,我的电脑是windows,用openssh还是出问题,最后是用了winscp搞定的(实际是拖拽操作,或右键点击上传修改路径))
下载scp 用户@服务器地址文件路径 本地路径(同上,事实上就是前面的是有文件的地方,后面是要下载的地方)
上面2个如果操作目录要加上-r
VIM编辑器介绍
gedit只有ubuntu有,centos没有,

命令模式,左下角空白(移动光标,删除复制)

我们用vi工具打开文件默认是进入命令行模式,我们想编辑文件必须进入文本输入模式(文本编辑),命令模式插入i,附加a,打开o,修改c,取代r、替换s都会进入文本输入模式,左下角会显示个插入

末行模式(保存,查找,替换),命令模式按:冒号进入

三种模式切换,默认就是命令模式,esc都能退回命令模式,a,i,o等进命令模式,:末行模式

VIM操作
vim是vi的升级版,现在发行的ubuntu基本默认vi都是调用vim
vi 1.txt 如果1.txt存在则打开,不存在则创建,按i进行插入文本,想保存退出,先esc到命令行模式,然后:进入末行,输入wq即同时保存和退出,回终端命令行界面
进入文本编辑模式,i所在光标位置左侧输入,I所在光标行首输入
a在光标右侧位置输入,A所在光标行尾输入
o在光标下一行产生新的一行,O所在光标上一行产生新行
命令行下移动光标h左,l(小写L)右,j上,k下(一个字符位置)
{}每段按空白来算




g是全部替换,没有g只把开头的abc替换123

这里想说下vim命令真的是够多,如果经常用还好。。
系统实时性能监控案例
我们这里用python写一个服务器状态监控脚本,服务器访问量大,就可能各种硬件指标参数大,我们这里做一个监控预警,达到一定的指标,就给自己发一个邮件,这里需要安装psutil,python自带的subprocess太麻烦,使用这个模块简单方便

中间插入一个坑,这里要安装pycharm 参照https://blog.csdn.net/xiaozaizi666/article/details/84137768
chrome浏览器下载社区版,tar -zxvf 解压对应包,然后切换到有pycharm.sh文件的地方运行,然后工具设置添加快捷方式锁定,我们就不必每次都sh才进入,记得设置环境变量,开始我pip3安装的包没加载进来,后来经过设置OK了
cpu


内存,属性用.加名字获得


网络,属性用.加名字获得

开机时间

获得用户

我们按照如上功能,做个终端显示界面,编程看看视频就行了,不过是调用api,还用了一个比较长的字符串= =

终端运行py文件
我们可以python3 py文件 运行
如果想只输入./xxx.py文件名 执行,这时需要在py文件开头加上#!/usr/bin/python3 (./不可省略)