Linux基本知识
使用的VMware虚拟机版本为centOS7;
也可以购买阿里云服务器,利用Xshell(远程控制),Xftp(进行文件的传输)进行远程连接使用;
关机和开机
开机会启动许多程序。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)
守护进程是提供基本操作系统下可能无法使用的多种功能的服务。其主要任务是监听服务请求,同时对这些请求采取行动。服务完成后,它将断开连接并等待进一步的请求。守护进程是脱离于终端并且在后台运行的进程,脱离终端是为了避免在执行的过程中的信息在终端上显示,并且进程也不会被任何终端所产生的终端信息所打断。
守护进程一般的生命周期是系统启动到系统停止运行;
用户的登录方式有三种:
- 命令行登录
- ssh登录
- 图形界面登录
最高权限账户为 root
关机指令为:shutdown
sync # 将数据由内存同步到硬盘中。
shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机
shutdown –h now # 立马关机
shutdown –h 20:25 # 系统会在今天20:25关机
shutdown –h +10 # 十分钟后关机
shutdown –r now # 系统立马重启
shutdown –r +10 # 系统十分钟后重启
reboot # 就是重启,等同于 shutdown –r now
halt # 关闭系统,等同于shutdown –h now 和 poweroff
常用的基本命令
目录管理
绝对路径、相对路径
**cd:**进入文件
**cd…:**返回上一级目录
ls:列出目录(-a参数:all,产看所有的文件,包括隐藏文件;-l参数:列出所有的文件,包括文件的属性和权限,不包括隐藏文件;)
ls -A 列出除.及..的其它文件
ls -r 反序排列
ls -t 以文件修改时间排序
ls -S 以文件大小排序
ls -h 以易读大小显示
cd目录名(绝对路径/,相对路径…/…/)
pwd:显示当前目录
mkdir:创建新的目录(-m:配置文件权限;-p:可以将上一级目录递归创建)
# 进入我们用户目录下
# cd /home
# 创建一个 test 文件夹
# mkdir test
# 创建多层级目录
# mkdir test1/test2/test3/test4
mkdir: cannot create directory ‘test1/test2/test3/test4’:
No such file or directory # <== 没办法直接创建此目录啊!
# 加了这个 -p 的选项,可以自行帮你创建多层目录
# mkdir -p test1/test2/test3/test4
# 创建权限为 rwx--x--x 的目录
# mkdir -m 711 test2
# ls -l
drwxr-xr-x 2 root root 4096 Mar 12 21:55 test
drwxr-xr-x 3 root root 4096 Mar 12 21:56 test1
drwx--x--x 2 root root 4096 Mar 12 21:58 test2
rmdir:删除空的目录(-p:连同上一级目录一同删除)
cp:复制目录或者文件(如果文件重复就选择覆盖y 或者放弃 n)
rm:移出目录(-f:忽略不存在的文件,强制删除;-r:递归删除目录;-l :删除时询问提醒)
# rm -i install.sh
rm: remove regular file ‘install.sh’? y
# 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名
# 尽量不要在服务器上使用 rm -rf /
mv ( 移动文件与目录,或修改名称 )
mv:移动文件(-f:强制;-u只替换更新过的文件)
chgrp:更改文件属组
chown:更改文件属主,也哭同时更改文件属组
chmod:更改文件9个属性
文件内容查看
Linux系统中使用以下命令来查看文件的内容:
- cat 由第一行开始显示文件内容;
- tac 从最后一行开始显示;
- nl 显示的时候,顺道输出行号;
- more 一页一页的显示文件内容,空格代表翻页,enter往下翻一行;
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页;
- head 只看头几行,通过-n来查看几行;
- tail 只看尾巴几行,通过-n来查看几行;
你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp;
Vim编辑器
vim是从vi发展出来的一个编辑器,有代码补完,编译及错误跳转等方便编程的功能;必须会使用(查看内容,编辑内容,保存内容);
分为三种模式:命令模式,输入模式,底线命令模式
i(按键) 进入输入模式(编辑模式)
ESC(按键) 退出
:wq 保存退出(shift+:调起输入框)
:q! 不保存退出(shift+:调起输入框)(内容更改)
:q 不保存退出(shift+:调起输入框)(没有内容更改)
: 进入低层命令模式
账号管理
- 用户账号的添加、删除、修改
- 用户口令的管理
- 用户组的管理
添加账号 useradd
useradd 选项 用户名
删除用户 userdel(常用-r 把用户的主目录一同删除)
userdel 选项 用户名
修改账号 usermod
usermod 选项 用户名
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
-g 用户组 指定用户所属的用户组
-G 用户组,用户组 指定用户所属的附加组
-m 使用者目录如不存在则自动建立
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
用户密码 passwd
- -l 锁定口令,即禁用账号。
- -u 口令解锁。
- -d 使账号无口令。
- -f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
磁盘管理
df(列出文件系统整体的磁盘使用量)
- -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
- -k :以 KBytes 的容量显示各文件系统;
- -m :以 MBytes 的容量显示各文件系统;
- -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
- -H :以 M=1000K 取代 M=1024K 的进位方式;
- -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
- -i :不用硬盘容量,而以 inode 的数量来显示
df [选项] [目录或文件名]
du(检查磁盘空间的使用量)
- -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
- -h :以人们较易读的容量格式 (G/M) 显示;
- -s :列出总量而已,而不列出每个各别的目录占用容量;
- -S :不包括子目录下的总计,与 -s 有点差别。
- -k :以 KBytes 列出容量显示;
- -m :以 MBytes 列出容量显示;
du [选项] [目录或文件名]
进程管理
什么是进程
-
在Linux中,每一个程序都是自己的一个进程,每一个进程都有id号;
-
每一个进程都会有一个父进程;
-
进程可以有两种方式:前台和后台运行;一般服务是前台运行,程序都是后台进行;
ps 产看当前系统中正在进行的各种程序的信息
ps [选项]
-a 显示当前终端所有的进程信息
-u 以用户的信息显示进程
-x 显示后台运行进程的参数
#ps -aux 查看所有进程
ps-aux|grep mysql 查看mysql相关进程
# | 在Linux中这个叫管道符 A|B 把A命令的一个结果作为输出来操作B命令
# grep 查找文件中符合条件的字符串
ps-ef :可以查看到父进程的信息
环境安装
安装环境三种方式:RPM,解压缩(tomcat,启动并通过外网访问),yum;
RPM 全名是『 RedHat Package Manager 』简称则为 RPM。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的 Linux 主机的一套管理程序。他最大的特点就是将您要安装的套件先编译过( 如果需要的话 )并且打包好了,透过包装好的套件里头预设的数据库记录, 记录这个套件要安装的时候必须要的相依属性模块( 就是你的 Linux 主机需要先存在的几个必须的套件 ),当安装在你的 Linux 主机时, RPM 会先依照套件里头的纪录数据查询 Linux 主机的相依属性套件是否满足, 若满足则予以安装,若不满足则不予安装。
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
jdk安装
-
下载JDK rpm 去Oracle官网下载即可
查看系统是否有JDK和其版本号
[root@kuangshen ~]# java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) # 检查 [root@kuangshen ~]# rpm -qa|grep jdk jdk1.8.0_121-1.8.0_121-fcs.x86_64 # 卸载 -e --nodeps 强制删除 [root@kuangshen ~]# rpm -e --nodeps jdk1.8.0_121-1.8.0_121-fcs.x86_64 [root@kuangshen ~]# java -version -bash: /usr/bin/java: No such file or directory # OK
安装JDK
# 安装java rpm [root@kuangshen kuangshen]# rpm -ivh jdk-8u221-linux-x64.rpm # 安装完成后配置环境变量 文件:/etc/profile JAVA_HOME=/usr/java/jdk1.8.0_221-amd64 CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export PATH CLASSPATH JAVA_HOME # 保存退出 # 让新增的环境变量生效! source /etc/profile # 测试 java -version [root@kuangshen java]# java -version java version "1.8.0_221" Java(TM) SE Runtime Environment (build 1.8.0_221-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
Tomcat安装
- 下载Tomcat,利用Xshell和阿里云服务器下载,利用Xftp可以直接将tomcat从Windows拖入Linux系统中
- 解压这个文件:tar xzvf apache-tomcat-8.5
- 启动tomcat测试 ./xxx.sh 脚本既可以运行
# 执行 ./startup.sh
# 停止 ./shortdown.sh
如果防火墙8080开朗或者阿里云安全组也开了,就可以直接远程访问;
域名解析后,如果端口是80 - http或者443-https 可以直接访问,如果是9000 8080 ,就需要通过Apcahe或者Nginx做一下反向代理即可(配置文件)
什么是端口
在Internet上,各主机间通过TCP/TP协议发送和接收数据报,各个数据报根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据报顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
本地操作系统会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。
端口其实就是队,操作系统为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
常用的一些服务器的端口
- mysql 缺省用的 3306 端口,
- redis 的 6379 端口,
- tomcat 默认用的 8080 端口,
- ssh 用的 22 端口,
- 等等…