命令行操作快捷键
& -加在一个命令的最后,可以把这个命令放到后台执行
ctrl+z(后台挂起) -可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可以行
ctrl+c -强行中断当前程序的执行
ctrl+/ -表示退出
ctrl+d -表示结束当前输入(即使用户不在给当前程序发出指令),那么Linux通常将结束当前程序。
jobs -查看当前有多少在后台运行的命令(已删除的任务不会被显示)
fg -将后台中的命令调至前台继续运行,如果后台有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令序号
bg -将一个在后台暂停的命令,编程继续在后台执行,也可通过%jobnumber调出。
Linux目录结构
*/bin -这个目录存放着最经常使用的命令
/sbin -这个目录存放的是系统管理员使用的系统管理程序
*/home -存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名
*/root -该目录为系统管理员,也称作超级权限者的用户主目录
/lib -系统开机所需要最基本的动态链接共享库,其作用类似与Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found -这个目录一般情况下是空的,当系统非法关机后,这里就会存放一些文件
*/etc -所有的系统管理所需要的配置文件和子目录
*/usr -用户的很多应用程序和文件都放在这个目录下,类似window的program files
*/boot -存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
×/proc -虚拟的目录,是系统内存映射,访问这个目录来获取系统信息
×/srv -存放一些服务启动之后需要提取的数据
×/sys -这时linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统
×/tmp -这个目录是用来存放一些临时文件的
/dev -类似于window的设备管理器,吧所有的硬件用文件的形式存储
*/media -linux系统会自动识别一些设备,例如U盘,光驱等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt -系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载到/mnt/上,然后进入该目录就可以查看里面的内容
/opt -主机额外安装软件所摆放的目录。
*/usr/local -这时另一个给主机额外安装软件所安装的目录,一般通过编译源码方式安装程序。
*/var -存放不断扩充的东西,习惯将经常被修改的目录存放在这个目录下。包括各种日志文件。
/selinux -SELinux是一种安全子系统,它能控制程序只能访问特定文件。
VI和VIM的基本介绍
所有的Linux系统都会内建VI文本编辑器
VIM具有程序编辑的能力,可以看作是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完,编译及错误跳转等方便编程的功能特别丰富
vi和vim的三种常见模式
正常模式
以VIM打开一个文档就直接进入一般模式了(默认)。在这个模式中,可以向window系统内一样操作文件
插入/编辑模式
按下i,I,o,O,a,A,r,R等任何一个字母之后才会进入编辑模式,一般按i
命令行模式
在这个模式当中,可以提供相关指令,完成读取,存盘,替换,退出,显示行号等动作。
VIM的命令集合
在VIM窗口打开一个新文件 :open file
在新窗口打开文件:spilt file
切换到下一个文件:bn
切换到上一个文件:bp
查看当前打开的文件列表,当前正在编辑的文件会用[]括起来:args
i在当前位置插入
I在当前行首行插入
a在当前位置后插入
A在当前行尾插入
o在当前行之后插入一行
O在当前行之前插入一行
yy拷贝当前行
p下一行粘贴 shift+p在当前行粘贴
退出命令
:wq/ZZ保存并退出
:q! 强制退出并忽略所有更改
:e!放弃所有修改,并打开原来的文件
用户和组的相关文件
/etc/passwd文件 -用户的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/shadow文件 -口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group文件 -组的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表(一般看不到)
Linux实用指令
运行级别----/etc/inittab --------切换到指定运行级别的指令init[012356]
关机
单用户(找回丢失密码)
多用户无网络服务
多用户有网络服务
保留
图形界面
重启
面试题
如何找回丢失的root密码?前提在本电脑并非远程
思路:进入到单用户模式(进入单用户模式root不需要密码就可以登录)修改root密码。
总结:开机在引导时输入 回车键->看到一个界面输入e->看到一个新的界面,选中第二行(编辑内核)->再输入e->在这行的最后输入1,再输入回车键 ->再输入一个b,这时就会进入到单用户模式。
此时,我们已经进入到单用户模式,使用passwd指令来修改root密码。
帮助指令
介绍:当我们对某个指令不熟悉时,可以使用Linux提供的帮助指令来了解这个指令的使用方法。
man 获得帮助信息
help 获得指令用法信息
文件目录类
pwd -显示当前工作目录的绝对路径
ls -查看当前目录的所有内容信息
cd -切换到指定目录 cd~/cd,回到自己家目录;cd..回到当前目录的上一级目录
mkdir -用于创建目录 如果要一次性创建多级目录,mkdir后加 -p
rmdir -删除空目录 如果目录下有内容rmdir后加 -rf
touch -创建一个空文件 可以一次性创建多个文件
cp -拷贝文件到指定目录 cp[选项] source dest -r递归复制整个文件夹 ;\cp强制复制
rm -移除【删除】文件或目录 -rf 删除整个文件夹 -f强制删除不要提示
mv -移动文件与目录/重命名
cat -查看文件内容(只能浏览不能修改-只读) -n显示行号 |more分页显示
more -以全屏的方式按页显示文件内容
less -分屏查看文件内容,与more类似,但比more强大,(类似与异步加载)对于显示大型文件具有较高的效率。
">"指令和">>"指令 -">"输出重定向(会将原来的文件的内容覆盖)和“>>”追加(不会覆盖原来文件的内容,而是追加到文件的尾部)
echo -输出内容到控制台 echo $PATH 输出$PATH环境变量
head -显示文件的开头部分内容(默认前10行) -n +数字 +文件路径
tail -用于输出文件中尾部的内容(默认显示后10行) -n +数字+文件
ln -软链接也叫符号链接,类似Windows里的快捷方式,主要存放了链接其他文件的路径 ln -s[原文件或目录]【软链接名】
history -查看已经执行过的历史命令,也可以执行历史指令
date -显示当前日期
date 指令-设置日期 date -s "2018-05-16 11:12:12"
cal -查看日历
搜索查找类
find -从指定目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示在终端。 find [搜索范围] 【选项】
find /home -name hello.text [按文件名称查找]
find /opt -user nobody [按文件的拥有者查找]
fing / -size +20M[查找整个系统下大于20M的文件]
locate -可以快速定位文件路径。locate利用事先简历的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无序遍历整个文件系统,查询速度较快。为保证查询结果的准确度,管理员必须定时更新locate时刻。第一次运行前,必须使用updatedb指令创建locate数据库
grep指令和管道符号| -grep过滤查找,管道符“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
cat hello.txt | grep -in yes
解压缩和压缩指令
gzip/gunzip -gzip用于压缩文件(压缩后原文件不保留),gunzip用于解压
zip/unzip -zip用于压缩,unzip用于解压,这个在项目打包发布中很有用
zip -r xxx.zip /目录/ 对目录下的所有文件进行压缩,压缩成名为xxx.zip的文件
unzip -d /opt/tmp xxx.zip 将xxx.zip解压到 opt目录下的tmp目录下
tar -打包指令,最后打包后的文件是.tar.gz的文件 tar [选项] xxx.tar.gz
tar -zcvf a.tar.gz 1 2 将1 和2 打包成a.tar.gz文件
tar -zcvf myhome.tar.gz /home/ 将一个文件全部打包
tar -zxvf a.tar.gz 解压文件到当前目录
tar -zxvf a.tar.gz -C /opt/ 解压到选定目录(前提是该目录存在)
组管理和权限管理
Linux组的基本介绍
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者,所在组,其他组的概念。
文件/目录 所有者 -一般文件的创建者就是文件的所有者
ls -ahl 查看文件的所有者
修改文件的所有者
chown 用户名 文件名
组的创建
groupadd 组名
修改文件所在组 chgrp 组名 文件名
改变用户所在组
usermod -g 组名 用户名
usermod -d 目录名 用户名 改变该用户登录的初始目录
删除用户
userdel -rf name
权限的基本介绍
rwx权限详解
rwx作用到文件
[r]代表可读
[w]代表可写-可以修改但不可删,删除一个文件的前提是对该文件所在的目录有写权限。
[x]代表可执行:可以被执行
rwx作用到目录
[r]可读:ls查看目录内容
[w]可写:可以修改,目录内创建+删除+重命名目录
[x]可执行:可以进入该目录
修改权限-chmod
第一种方式:+,-,=变更权限 u:所有者 g:所在组 o:其他人 a:所有人(u,g,o的总和)
chmod u=rwx,g=rx,o=x 文件目录名
chmod o+w 文件目录名
chmod a-x 文件目录名
第二种方式:通过数字变更权限 r=4 w=2 x=1 rwx=4+2+1=7
修改文件所有者-chown
chown newowner file 改变文件的所有者
chown newowner:newgroup file 改变用户的所有者和所有组
-R 如果是目录,则使其下所有子文件或目录递归生效
修改文件所在组-chgrp
chgrp newgroup file 改变文件的所有组 chgrp -R bandit kkk/
实践
police ,bandit
jack,jerry :警察
xh,xq:土匪
创建组
groupadd police
groupadd bandit
创建用户
给四个用户设置密码
Jack创建一个文件,自己可以读写,本族人可以读,其他组没任何权限
jack修改该文件,让其它组人可以读,本组人可以读写
xh投靠警察,看看是否可以读写
先用root 修改小红的组 -usermod -g police xh
使用Jack 给他的/home/jack的所在组一个rx权限 -chmod g=rx jack/
xh重启到jack目录下就可以操作jack的文件
定时任务调度
任务调度是指系统在某个时间执行的特定的命令或程序。
任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。 2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份
如果知识简单的任务,可以不用写脚本,这届在crontab中加入任务即可;对于比较复杂的任务,需要写脚本(Shell编程)
crond任务调度
Linux磁盘分区,挂载
分区的基础知识
分区的方式
mbr分区
最多支持四个主分区
系统只能安装在主分区
扩展分区要占一个主分区
MBR最大只支持2TB,但拥有最好的兼容性
gtp分区
支持无限多个主分区(但操作系统可能限制,比如windows下最多128个分区)
最大支持18EB的容量(1EB=1024PB,1PB=1024TB)
windows7 64位以后支持gtp
linux分区
Linux来说无论分多少个区,分给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,linux中每个分区都是用来组成整个文件系统的一部分。
Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得。
硬盘说明
Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
对于IDE硬盘,驱动器标识为“hdx”其中"hd"表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“”代表分区,前四个分区用数字1到4表示,它们是主分区或拓展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
对于SCSI硬盘则标识为"sdx~",SCSI硬盘是用"sd"来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
系统分区图
给虚拟机增加一块硬盘
需求:给linux系统增加一个新的硬盘,并且挂载到/home/newdisk
虚拟机添加硬盘
在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,至到完成。然后重启系统(才能识别)!
分区 fdisk /dev/sdb
开始对/sdb分区
m 显示命令列表
p 显示磁盘分区 同fdisk -l
n 新增分区
d 删除分区
w 写入并退出
开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。
格式化
分区命令: mkfs -t ext4 /dev/sdb1
其中ext4是分区类型
挂载 -将一个分区与一个目录联系起来
mount 设备名称 挂载目录 例:mount /dev/sdb1 /newdisk
umount 设备名称 或者 挂载目录 例:umont /dev/sdb1 或者 umont/newdisk
设置可以自动挂载
通过修改/etc/fstab实现挂载,添加完成后 执行mount -a即可生效
磁盘情况查询- df-h
查询指定目录的磁盘占用情况(默认当前目录)- du -h /目录
-s 指定目录占用大小汇总
-h 带剂量单位
-a 含文件
--max-depth=1 子目录深度
-c列出明细的同时,增加汇总值
工作实用指令
统计/home文件夹下文件的个数 - ls -l /home |grep "^-" | wc -l
统计/home文件夹下目录的个数 - ls -l /home |grep "^d" | wc -l
统计/home文件夹下文件的个数,包括子文件夹 - ls -lR /home |grep "^-" | wc -l
统计文件夹下目录的个数,包括子文件夹里的 - ls -lR /home |grep "^d" | wc -l
以树状显示目录结构 tree /目录
网络配置
Linux网络配置原理图(含虚拟机)
配置静态IP
首先查看虚拟网络编辑器,确认VMnet8的子网和网关
cd /etc/sysconfig/network-scripts 用vim编辑 ifcfg-ens33
service network restart 重启网络服务 或者重启虚拟机,建议重启网络服务
进程管理
基本介绍
在Linux中,每个执行的程序都成为一个进程。每一个进程都分配一个ID号。
每一个进程都会对应一个父进程,而这个父进程可以赋值多个子进程
每个进程都可能以两种方式存在。前台与后台
一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。
操作指令
ps 是用来查看目前系统中,有哪些正在执行,以及执行状况
ps -a -显示当前终端的所有进程信息
ps -u -以用户的格式显示进程信息
ps -x -显示后台进程运行的参数
ps -aux | grep 名称 -查看指定名称线程
ps -ef | more 查看父级线程
终止进程kill和killall
kill -9 进程号 - 表示强迫进程停止
killall 进程名称
pstree -以树状的形式来看进程信息
pstree -p 显示进程的PID
pstree -u 显示进程的所属用户
服务(service)管理
介绍:服务(service)本质就是进程,但运行在后台,通常都会监听某个端口,等待其他程序的请求。因此又称为守护线程。
查看防火墙状态 -service iptables status
关闭防火墙状态 -service iptables stop
查看服务名
使用setup->系统服务 就可以看到
ls -l /etc/init.d/
chkconfig指令
chkconfig --list -查看服务 /chkconfig --list | grep 服务名 -查看指定服务
chkconfig 服务名 --list 查看指定服务
chkconfig --level 5 服务名 on/off -设置服务在运行级别5下的开/关
动态监控进程
介绍:top和ps命令很相似,它们都用来显示正在执行的进程。top和ps区别在于top在执行一段时间可以更新正在运行的进程。
top 回车(查看执行的进程)->u 回车->输入用户名 -监视特定用户
top 回车(查看执行的进程)->k 回车->输入要结束的ID号 -终止指定的进程
top -d 10 -指定系统状态更新的时间(默认3秒)
监控网络情况
netstat -amp | more 查看所有的网络服务
RPM
介绍:RPM是一种用于互联网下载包的打包及安装工具,生成具有.rpm扩展名的文件(可理解为setup.exe)。
rpm -qa | grep xx -查询已安装的rpm列表
rpm -qa 查询安全的所有安装包
rpm -q 软件包名 查询软件包是否安装
rpm -qi 软件包名
rpm -qi file 查找rpm包的安装位置
rpm -qf 文件全路径名 查询文件所属的软件包
卸载rpm包 -rpm -e RPM包名 / rpm -e -nodeps RPM包名
安装rpm包
rpm -ivh RPM包全路径名称 参数说明:i=install安装;v=verbose提示;h=hash 进度条
YUM
介绍:一款Shell前端软件包管理器,可以从指定的服务器自动下载PRM包且安装,可以自动处理依赖关系,并一次安装所有依赖的软件包。前提可以联网
yum list | grep xx 软件列表
yum install xxx 下载安装
Linux安装JDK
首先将Linux版本的JDK的tar.gz文件传到/opt目录下,tar -zxvf jdk.tar.gz 解压文件
配置环境变量的配置文件 vim /etc/profile
JAVA_HOME=/opt/jdk1.7.0_79 ; PATH=/opt/jdk1.7.0_79/bin:$PATH ;export JAVA_HOME PATH
注销用户,环境变量才能生效
测试安装,在任何目录下都可以使用 java /javac
Linux安装Tomcat
在/opt目录下解压tomcat
进去到bin目录下启动 ./startup.sh,此时Linux本地浏览器可以访问Tomcat
开放8080端口 -vim /etc/sysconfig/iptables
查看防火墙状态 -firewall-md --state
如果上一步出去关闭状态则运行 -systemctl start firewalld.service
开启8080端口 -firewall-cmd --zone=public--add-port=8080/tcp --parmanent;
输入命令重启防火墙 - systemctl restart firewalld.service
输入命令重新载入配置 -firewall-cmd --reload
此时windows可以访问8080
Linux安装MySQL
vim /etc/my.cnf
skip-grant-tables //无需输入密码即可登录mysql
character_set_server=utf8
init_connect='SET NAMES utf8'
systemctl stop mysqld.service
systemctl start mysqld.service
mysql //启动mysql
update mysql.user set authentication_string=password('123456') where user='root'; //设置一个简单的密码
flush privileges; 立即生效