OS的一些基本概念简介,在下面两篇中已经介绍了一些:
- OS_Part_1整起(进程线程协程并发并行、进程线程切换进程间通信、死锁\进程调度策略、分段分页、交换空间、OS三大调度机制)
- OS_Part_2整起~IO们那些事【包括五种IO模型:(BIO、NIO、IO多路复用、信号驱动、AIO);零拷贝、事件处理及并发等模型】
- 再贴一些自己看的一些视频捡的零碎银两,关键字记录法
- 一些基本概念:计算机系统分硬件软件,服务器分类【从高度分类:1U2U4U;从服务器外形:塔式、刀片式、机架式;从功能分类】、硬件厂商(Dell、HP、IBM、浪潮、华为、曙光、华三)、机房(IDC机房托管、自建【机架式服务器机柜】)、服务器特点(稳定性高、要求能够全天724365工作、性能要求高【CPU核心数多、频率高,功耗大;内存大;硬盘(容量大);网卡】、模块化【方便拆卸、维护、扩展升级】、稳定性可靠性安全性都要好)
- 服务器:服务器也叫伺服器,提供计算服务的设备
- 服务器硬件组成:电源【冗余设计:(双电设计、模块化电源、可插拔)】、主板、CPU【Intel】、内存、硬盘【重要指标是转速:5400转和7200转、容量】、网卡、阵列卡【为了获得更高的容量、性能、冗余(数据安全),用了磁盘阵列卡,廉价冗余磁盘阵列,磁盘阵列(RAID)是一种技术,通过把若干个磁盘按照一定要求组成一个整体,然后用阵列控制器来控制整个磁盘阵列】、远程卡【跟网卡一样,跟那个XSHELL功能一样,有时候不方便直接进入机房,可以用来远程管理服务器BIOS硬件、配置RAID卡、远程重启等】、机箱
- 计算机软件:除了MacOS、Window大法好、安卓移动端那些、再就是两个大哥大【Unix、Linux】
- Unix:稳定安全,银行等这些大的垄断性的企业常用
- Linux:是一个裁剪板的阉割版的Unix
Linux系统版本的选择和优化:不选最旧的不选最新的、选偶数版本
- 1.用哪种服务器架构:X86【Intel公司,用的是志强处理器;AMD公司,很少】或者ARM【Android手机,高通公司,iPhone用的A12、A12处理器也是ARM架构。ARM架构现在也支持iOT设备、iPad Pro】架构。
- 2.基于CPU处理数据能力:32位64位…?
- 3.根据需求、开源不开源【服务器选择,不选最老不选最新:Ubuntu Server 16.04和18.04比较主流和稳定;Centos 7.6就可以】、对硬件的要求;
- 对CentOS7进行系统优化:linux系统中的/etc目录下重要东西很多。在这里可以对CentOS7进行系统优化,cd /etc/yum.repos.d/中
先备份再修改配置文件、清空并建立缓存【yum clean all;yum makecache】、优化网络管理【临时关闭:systemctl stop NetworkManager、永久关闭systemctl distable NetworkManager】、设置服务器静态IP地址【cd /etc/sysconfig/network-script/这个目录下存的是网卡的配置文件ifcfg-ens33,修改这个配置文件从而设置静态固定的IP地址。改好之后老规矩:systemctl restart network】
- 设**
置服务器静态IP地址:DCHP改为static,去掉UUID,配置好GATEWAY和IPADDR,并且IPADDR和GATEWAY都必须为10开头的私有地址段
**。设置服务器静态IP地址【cd /etc/sysconfig/network-script/这个目录下存的是网卡的配置文件ifcfg-ens33,修改这个配置文件从而设置静态固定的IP地址。改好之后老规矩:systemctl restart network】
- 设**
但是呢,像咱们搞Java的,在SSM那块一般都是写好单体项目打个war包扔到Linux地下的tomcat服务器中,然后运行起来就可以访问项目了,这个过程中咱们经常要用XSHELL这种工具,对Linux文件以及目录以及环境做一些操作,那Linux命令不xiao习一下怕是不太行
- Linux基本命令:【
命令学习/使用网站:https://www.runoob.com/linux/linux-tutorial.html + https://www.w3xue.com/manual/linux/ + https://www.shell.how/
】,多用用就会了【修改文件/目录的权限的命令:chmod
】- 命令概览,详细的在下面:
- 目录切换命令:cd …(或cd…/): 切换到上一层目录、cd /: 切换到系统根目录、、cd ~: 切换到用户主目录。ls【ls -al】、
pwd(显示当前用户所在目录)
、tab【自动补全】、ctrl+c【强制退出本信号或者本命令】、ctrl+a【光标移动至本行首】、ctrl+e【光标移动至本行尾】、ctrl+f【光标向右移动一个字符】、ctrl+b【光标向左移动一个字符】、ctrl+insert【复制】、shirt+insert【粘贴】、man【帮助文档】
、touch【创建一个或多个文件;touch 文件.文件扩展名】、mkdir\rmdir\cp【复制一个文件或目录】\rm【删除一个文件或空目录,删除非空目录要rm -rf,慎用rm -rf;慎用rm -f以及rm -rf,尽量用rm -r这种问咱们是否删除的模式
】\mv【移动文件或目录】、cat【从文件的第一行显示文件的内容;cat >a.txt<<EOF,可以给a.txt中输入多行内容,最后一行以EOF结尾即可实现向a.txt中输入内容,也就是重定向输入】、tac【和cat命令是一对,cat命令的倒序显示,与cat命令用法一模一样】、nl【显示行号,并同时从文件的第一行显示文件内容】、more【一页一页的翻动显示,-num,指定显示多少,更人性化,空格键可以翻页,字母b可以向上翻,】、less【与more是一对,一页一页翻动显示】、head【取出文件的前几行,-num】、tail【取出文件的后几行,-num】、tree将所在目录树形展示【有时候报错,可能你得先安装tree这个命令】
- 目录的操作命令(增删改查):
mkdir 目录名称
: 增加目录
- ls/ll(ll 是 ls -l 的别名,ll 命令可以看到该目录下的所有目录和文件的详细信息):查看目录信息。
find 目录 参数
: 寻找目录(查)。手册里的find是这样的。示例:- ① 列出当前目录及子目录下所有文件和文件夹:
find .
; - ②
在/home目录下查找以.txt 结尾的文件名:find /home -name "*.txt"
,忽略大小写: find /home -iname “*.txt” ; - ③
当前目录及子目录下查找所有以.txt 和.pdf 结尾的文件:find . \( -name "*.txt" -o -name "*.pdf" \)或find . -name "*.txt" -o -name "*.pdf"
。
- ① 列出当前目录及子目录下所有文件和文件夹:
mv 命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中
。- mv 目录名称 新目录名称: 修改目录的名称(改)。注意:
mv 的语法不仅可以对目录进行重命名,而且也可以对各种文件,压缩包等进行 重命名的操作
。 - mv 目录名称 目录的新位置: 移动目录的位置—剪切(改)。注意:mv 语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作。另外 mv 与 cp 的结果不同,
mv 好像文件“搬家”,文件个数并未增加。而 cp 对文件进行复制,文件个数增加了
。- cp -r 目录名称 目录拷贝的目标位置: 拷贝目录(改),-r 代表递归拷贝 。注意:cp 命令不仅可以拷贝目录,还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r 递归。
- mv 目录名称 新目录名称: 修改目录的名称(改)。注意:
- rm [-rf] 目录 : 删除目录(删)。注意:
rm 不仅可以删除目录,也可以删除其他文件或压缩包
,为了增强大家的记忆,无论删除任何目录或文件,都直接使用rm -rf 目录/文件/压缩包
。- rm -rf 文件: 删除文件(删)
- 文件的操作命令(增删改查)
- touch 文件名称: 文件的创建(增)
- cat/more/less/tail 文件名称 :文件的查看(查)。命令 tail -f 文件 可以对某个文件进行动态监控,例如 tomcat 的日志文件, 会随着程序的运行,日志会变化,可以使用 tail -f catalina-2016-11-11.log 监控文件的变化 。
- vim 文件: 修改文件的内容(改)。vim 编辑器是 Linux 中的强大组件,是 vi 编辑器的加强版,vim 编辑器的命令和快捷方式有很多,但此处不一一阐述,大家也无需研究的很透彻,使用 vim 编辑修改文件的方式基本会使用就可以了。在实际开发中,使用 vim 编辑器主要作用就是修改配置文件,下面是一般步骤: vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q! (输入 wq 代表写入内容并退出,即保存;输入 q!代表强制退出不保存)
- vim:进入编辑模式【i,从当前光标处插入信息。I从光标所在行的行首插入】、yy命令复制光标所在当前行内容【nyy表示从光标开始复制n行】、p命令在光标所在行的下一行粘贴、dd【删除光标所在行,ndd表示删除光标所在行的开始n行】、gg快速跳转到文件头部所在行的首字符、G命令快速跳转到文件尾部所在行的首字符【n+G,光标移动到第n行】。$ 快速到光标所在行的行尾字符所在处【n+$,光标移动到第n行的行尾部】、u命令撤销;【输入:,进入底行模式或者叫命令行模式,可以wq保存,可以q退出当前文件,可以set nu显示行号,可以/要搜的内容,就可以搜索内容,可以q!强制退出不保存,可以s/old/new把光标所在行从左到右第一次出现的old内容替换为new内容,可以s/old/new/g替换光标所在行所有的old为new,可以%s/old/new/g,把全文中的old替换为new】
- touch 文件名称: 文件的创建(增)
- echo:可以在Linux窗口打印一些东西玩玩
- echo > ,表示重定向覆盖的方式写入,覆盖之前的
- echo >> ,表示输出重定向追加的方式写入,不覆盖之前的
- echo 2>> ,错误信息追加
- echo &>> ,正确和错误信息均写入同一个文件
- 压缩文件的操作命令:
- 打包并压缩文件:
Linux 中的打包文件一般是以.tar 结尾的,压缩的命令一般是以.gz 结尾的
。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz
。 命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件
- 解压压缩包:tar [-xvf] 压缩文件。
x:代表解压
- 打包并压缩文件:
- Linux 的权限命令:
操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在 Linux 中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other)
,通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。【超级用户可以无视普通用户的权限,即使文件目录权限是 000,依旧可以访问。
】
-
所有者(u) :
一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者
,用 ls ‐ahl 命令可以看到文件的所有者 也可以使用 chown 用户名 文件名来修改文件的所有者 。 -
文件所在组(g) :
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
。用 ls ‐ahl命令可以看到文件的所有组也可以使用 chgrp 组名 文件名来修改文件所在的组。 -
其它组(o) :
除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
。
-
【修改文件/目录的权限的命令:chmod】:
修改/test 下的 aaa.txt 的权限为文件所有者有全部权限,文件所有者所在的组有读写权限,其他用户只有读的权限:chmod u=rwx,g=rw,o=r aaa.txt 或者 chmod 764 aaa.txt
。 -
文件的类型:
- d: 代表目录
- -: 代表文件
- l: 代表软链接(可以认为是 window 中的快捷方式)
-
Linux 中权限分为以下几种:
- r:代表权限是可读,r 也可以用数字 4 表示
- w:代表权限是可写,w 也可以用数字 2 表示
- x:代表权限是可执行,x 也可以用数字 1 表示
-
- 常用命令:
- pwd: 显示当前所在位置
- sudo + 其他命令:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行
- grep 要搜索的字符串 要搜索的文件 --color: 搜索命令,–color 代表高亮显示
ps -ef/ps -aux: 这两个命令都是查看当前系统正在运行进程,两者的区别是展示格式不同。如果想要查看特定的进程可以使用这样的格式:ps aux|grep redis (查看包括 redis 字符串的进程),也可使用 pgrep redis -a
。- 如果直接用 ps((Process Status))命令,会显示所有进程的状态,通常结合 grep 命令查看某进程的状态。
kill -9 进程的pid: 杀死进程(-9 表示强制终止。)
- 网络通信命令:
- 查看当前系统的网卡信息:ifconfig
- 查看与某台机器的连接情况:ping
- 查看当前系统的端口使用:netstat -an
- net-tools 和 iproute2 :net-tools起源于 BSD 的 TCP/IP 工具箱,后来成为老版本 LinuxLinux 中配置网络功能的工具。但自 2001 年起,Linux 社区已经对其停止维护。同时,一些 Linux 发行版比如 Arch Linux 和 CentOS/RHEL 7 则已经完全抛弃了 net-tools,只支持iproute2。linux ip 命令类似于 ifconfig,但功能更强大,旨在替代它
- shutdown: shutdown -h now: 指定现在立即关机;shutdown +5 “System will shutdown after 5 minutes”:指定 5 分钟后关机,同时送出警告信息给登入用户。
- reboot: reboot: 重开机。reboot -w: 做个重开机的模拟(只有纪录并不会真的重开机)
- Linux 环境变量:在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的主目录(HOME)。
配置文件执行先后顺序为:/etc/enviroment –> /etc/profile –> /etc/profile.d –> ~/.bash_profile –> /etc/bashrc –> ~/.bashrc
。如果要修改系统级别环境变量文件,需要管理员具备对该文件的写入权限。建议用户级别环境变量在 ~/.bash_profile中配置,系统级别环境变量在 /etc/profile.d 中配置
。- 按照作用域来分,环境变量可以简单的分成:
- 用户级别环境变量 : ~ /.bashrc、~/.bash_profile。
- 系统级别环境变量 : /etc/bashrc、/etc/environment、/etc/profile、/etc/profile.d
- 读取环境变量
- 环境变量修改
- 按照作用域来分,环境变量可以简单的分成:
- Linux查看系统资源占用 :
free命令查看内存占用
- 查看内存占用前五的进程:ps auxw | head -1;ps auxw|sort -rn -k4|head -5
- 查看cpu占用前三的进程:ps auxw|head -1;ps auxw|sort -rn -k3|head -3,只是选择的资源占用情况的第3列(即cpu),用“-k3”表示。
top显示系统整体负载
- linux下查看端口是否被占用以及查看所有端口
- 查看服务器端口是否被占用:lsof -i:8081
- 查看服务器所有端口:netstat -ntlp
- 查看服务器是否开放某端口:
- 先用ps -ef | grep xxx(某个进程),可以查看某个进程的pid,再用netstat -anp | grep pid号,可以查看到该进程占用的端口号
- 查看进程、线程的命令:
- LINUX查看进程的4种方法(小结)
- ps aux:ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
- ps -elf:
- top:以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次,其作用基本类似于Windows系统中的任务管理器。
- pstree -aup:
- ps aux:ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
- LINUX查看进程的4种方法(小结)
- 目录切换命令:cd …(或cd…/): 切换到上一层目录、cd /: 切换到系统根目录、、cd ~: 切换到用户主目录。ls【ls -al】、
- 命令概览,详细的在下面:
- Shell
- Shell是用C开发的一个程序或者一种程序设计的语言或者叫命令解释器,作为用户跟OS之间的一个连接桥梁或者中间翻译官使得用户可以跟OS交互;可以用来可以执行一些脚本、自动化运维的任务、修改服务器固定ID地址、修改系统变量
巨人的肩膀
https://xiaolincoding.com/os
低并发编程
javaGuide老师关于Linux的文章
javaGuide老师关于Shell的文章