Linux补课
已经将开发环境转Linux了(当然用的是ubuntu,图像界面还是舒服一点,支持也多),不上QQ和微信的话用的还是挺舒服的,但是无奈基础欠账太多,这里赶快补一下
Linux和Unix的关系
emmm算是老生常谈了,但是还是记录一下吧,建立一些感性认识。
Unix是先开发的,最一开始的版本是使用汇编语言,后来用C语言重写了。之后Bell实验室允许大学使用该操作系统教学。Linus对Unix的底层代码进行了修改,原先命名为Linus's Unix并上传,后来被网站管理员改名为Linux,之后就火了
Unix现在还活得好好的,只不过在互联网上的名气不如Linux大,毕竟Linux的面向人群还是大一些的
GNU
理查德·马修·斯托曼
1991年,他与Liuns商谈,让Linux加入了GNU计划,后来更名为GNU/Linux,当然人们还是叫Linux
Linux的系统特点
开源
多用户、多任务:支持多用户同时登录,支持同时进行多个任务
Windows属于单用户、多任务(也可以通过一些方法实现多用户,具体搜索即可)
Linux分支
ubuntu\debian\centos\rethat\suse\deepin\arch等
分支图:
redhat的服务是收费的
Ubuntu常用快捷键
Super 键:打开活动搜索界面,会显示一个搜索框以及所有打开的应用程序界面
Ctrl+Alt+T:打开 Ubuntu 终端窗口
Super+A:显示应用程序菜单
Super+Tab 或 Alt+Tab:在运行中的应用程序间切换
Super+箭头:移动窗口位置
Super+左箭头:贴合左面
Super+右箭头:贴合右面
Super+上箭头:最大化
Super+下箭头:恢复正常大小
Super+M:切换到通知栏
Alt+F2:运行控制台。是的,Linux除了终端还有控制台
Alt+F4/Ctrl+Q:关闭应用程序窗口
Ctrl+Alt+箭头:切换工作区
路径符号
Linux中的分隔符是/,不是Windows的\
~:家(home)目录
. :一个点表示当前目录
.. :两个点表示上一级目录
/ :根目录
指令
ls 路径:显示该目录下所有的文件
参数:
ls -l:以详细列表的形式展示
ls -lh:以详细列表的形式展示的同时以更具有可读性的方式显示
ls -a:显示所有的文件及文件夹(主要是显示隐藏文件、文件夹)
LInux的隐藏文件一般都是.开头
ls列出的结果中,蓝色表示文件夹,黑色表示文件,绿色表示其权限为拥有所有权限
pwd:打印当前工作目录
mkdir 文件夹名称:创建文件夹
-p : mkdir -p 路径: 一次性创建多层不存在的目录,就是路径中所有不存在的文件夹都会被创建
mkdir 路径1 路径2:一次性创建多个目录
touch 路径:创建文件
cp 要复制的文件的路径 目的路径(可以同时改名):复制
-r: 递归复制,也就是将文件夹里面的内容也进行复制
mv 需要移动的文件目录 要保存的文件目录:移动,也就是剪切的意思
mv同时也能执行重命名
rm 文件目录:删除
-f:force,不进行再次确认
-r:递归删除,用于删除文件夹
-rf:两个一起用
删除指令可以使用正则表达式:例如 rm -r linux*
输出重定向
将命令结果保存到文件中而不是显示在终端中
> 覆盖输出,覆盖掉原有文件
>> 追加输出,在文件末尾添加
cat:
cat 文件路径:直接打开一个文件而不进入编辑,和vim等编辑器效果不一样(打开后依然在终端中,能看到之前的命令)
cat 待合并文件路径1 待合并文件路径2等等 >新地址:合并文件
不同类型的文件也可以合并
df:查看磁盘空间
df -h:以较高可读性的形式显示
free:查看内存使用情况
free -h同理
swap用于临时内存,用磁盘空间充当内存
head:查看一个文件的前n行(默认显示前10行)
head -n 文件路径
tail:查看一个文件的后n行(默认10行)
也可以通过tail查看一个文件的动态变化,语法为tail -f 文件地址,但是这个命令主要用来查看系统日志,变化内容不能是用户手动添加的(用户使用vim修改文件的实质是删除文件并创建同名新文件,这使得tail无法跟踪),要测试可以利用输出重定向.退出的话按下q键即可
less:查看文件,以较少的内容进行输出,只显示一屏,按下辅助功能键查看更多
less 文件地址
:n 从第n行进行显示
空格键:一页一页翻
上下:一行一行翻
:q 退出
wc:统计文件内容信息
wc 文件路径
-l:行数
-w:单词数,注意,这里的单词是依照空格来区分的
-c:字节数
不加选项的话,返回:行数、单词数、字节数、名称
加选项就只返回对应的内容和文件名称
date指令:操作时间和日期(读取、设置),shell脚本中用的比较多
但是设置比较少用现在,都是自动获取
CST:当地时间
不加参数的话输出是这个样子:
2019年 10月 06日 星期日 12:07:26 HKT
带参数的输出:
date +%F,也可以用 date "+%Y-%m-%d":输出年月日:
2019-10-06
注意这里Y是大写,m和d是小写,大小写表示的含义是不一样的
Y:整位的四位数年
date +%F,输出也是
2019-10-06
,等价于date "+%Y-%m-%d"date "+%F %T",输出是
2019-10-06 15:04:35
,这里的引号表示让其中的内容成为一个整体,和date "+%Y-%m-%d %H:%M:%S"
等价date -d "-1 day" "+%F %T"
:表示输出一天前的时间(可以用于编写shell脚本自动实现备份数据库以及删除一个时间节点之前的,例如一个月或者一个礼拜之前的数据库备份)date -d "+1 day" "+%F %T"
:一天后date -d "-1 month" "+%F %T"
:一周前date -d "-1 year" "+%F %T"
:一年前加s和不加都可以
完整参考内容见下:
cal:操作日历
直接输入cal:显示当月日历,等价于
cal -1
cal -3:显示上一个月+本月+下一个月的日历
cal -y 2019:显示2019年日历
clear:清空终端中的命令和结果,也可以用快捷键 ctrl+L
不是严格意义上的清空,只是下拉一页,用来的都在上面
管道:|
管道不能单独使用,必须配合前面讲的一些指令配合使用,主要起辅助作用
管道一般可以用于:
过滤
例如:
用管道查询出当前目录下包含y字母的文档名称:
ls|grep y
grep:global regular expression print,全局正则表达式打印,用于检索目标行命令
以管道作为分界线,前面命令的输出就是后面命令的输入
特殊
例如:
通过管道实现less的等价效果(只是举例了,还是用less)
cat 路径|less
拓展处理
统计某目录下文档的总个数
ls 目录地址 |wc -w
hostname:操作主机名:读取和设置(设置用的比较少,因为这里改的是临时的,一重启就没有了)
语法:
hostname:输出完整的主机名
hostname -f:输出当前主机名中的FQDN(全限定域名)
id:查看一个用户的基本信息(用户id、用户组id、附加组id)
如果不指定用户,则默认当前用户
id 用户名:显示指定用户的基本信息,例如
id root
验证用户信息:通过文件/etc/passwd
验证用户组信息:/etc/group
whoami:返回当前用户名
一般用于shell脚本,获取用于当前操作的用户名,方便日志的记录
ps -ef指令
用于查看当前机器的进程信息
-e:列出全部进程
-f:显示全部的列,即显示那些默认不显示的内容
显示的内容:
UID:用户名
PID:process ID,进程名
PPID:父级进程名
如果一个程序的父级进程找不到,该程序的进程称为僵尸进程,就是表示没有什么用了
C:表示CPU占有率(百分比)
STIME:start time:启动时间
TTY:终端设备
如果一个进程有终端设备,就表示这个进程是由这个终端发起的,?表示不是由终端发起的
TIME:进程的执行时间
CMD:进程对应的路径
案例:搜索特定进程
ps -ef|grep gnome-shell
ps-ef搜索出来的结果,无论原来有没有,一定会至少有一个,也就是我们搜索这个行为的进程,即使我们乱搜也会有的
top:查看机器进程占用的资源(实时更新的哦)
q键或者Ctrl+c退出
解释一下top的一些参数意思:
- top:当前时间
- up:开机时间
- load average:在某个时间点范围内的负载情况,第一个是5分钟,第二个是10分钟,第三个是15分钟
- zombie:僵尸进程数量
表头的含义:
PR(priority):权重(网站用的那个PR是page rank),例如在搜索引擎对网页也有这个,范围是1-10,级别越高说明优先级越高,越受欢迎
NI:nice CPU time,即用户进程空间改变过优先级的进程占用CPU百分比
VIRT:虚拟内存,虚拟内存就是进程申请的内存
RES:常驻内存,常驻内存是进程实际使用的内存
SHR:共享内存,有的进程不能独立运行,而是依赖于其他进程,共享内存值的就是常驻内存中对其他进程的调用开销
计算一个进程实际使用的`1内存=常驻内存-共享内存
S:进程的状态(sleeping,S是睡眠,R是运行)
MEM:内存的占用百分百
COMMAND:进程的名称或者路径
排序:
M:按内存占用排序
P:按CPU使用排序
1:将CPU的不同内核的状态展开,分别显示
du -sh 目录地址:查看目录的真实大小
-s:只显示汇总的大小(summary)
-h:使用便于阅读的形式显示
find 路径范围 选项 选项的值:用于查找文件
-name:按名字来搜,支持模糊搜索和正则表达式(例如:*.txt,表示所有txt文件)
-type:按文档的类型搜,注意,这里指的不是文件名后缀,而是“f":文件,"d":文件夹
service:控制软件服务的启动/停止/重启
service 服务名 start/restart/stop
例如,启动apache:service apache2 start
可以使用ps查询apache服务是否启动:
ps -ef|grep apache2
同时访问的一个用户就需要一个进程来管理,所以启动apache的时候会同时启动一些子进程来应对并发
kill:杀死进程
语法:kill 进程的PID
killall:直接通过进程名称杀死进程,不需要先查询出PID了
语法: killall 进程名称
ifconfig:操作网卡,全称是interface configuring
显示处理的结果举个例子:
enp3s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 54:ee:75:cf:f1:f8 txqueuelen 1000 (以太网)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (本地环回)
RX packets 302613 bytes 122591057 (122.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 302613 bytes 122591057 (122.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.187.23 netmask 255.255.240.0 broadcast 172.16.191.255
inet6 fe80::b8b9:217c:9d49:ef9e prefixlen 64 scopeid 0x20
ether 7c:67:a2:4e