本文的架构如图
一.linux概述
1.linux的历史概述
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
特点:
- all is file(一切皆为文件)
Linux的基本思想有两点:第一,一切都是文件;第二,每个文件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。 - 多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。 - 开源免费
Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。
2.linux的现有版本
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
3.linux的目录结构
这是linux的目录为属性结构,所有目录的根目录都是 /,
/ 根目录下有如下目录.
目录的树状结构如下图:
以下是对这些目录的解释(重要的目录,加粗表示):
- /bin:
bin是Binary的缩写, 这个目录存放着最经常使用的命令。
- /boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
- /dev :
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
- /etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。因为我们可能修改系统的配置,例如安装jdk修改path
- /home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。一般我们登陆进linux系统中的根目录就是这个/home目录.
- /lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
- /lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
- /mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
- /opt:
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的.我们经常会将自己安装的应用程序放在这个目录.
- /proc:
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
- /root:
该目录为系统管理员,也称作超级权限者的用户主目录。
- /sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
- /selinux:
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
- /srv:
该目录存放一些服务启动之后需要提取的数据。
- /sys:
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
- /tmp:
这个目录是用来存放一些临时文件的。
- /usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
- /usr/bin:
系统用户使用的应用程序。
- /usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
- /usr/src:
内核源代码默认的放置目录。
- /var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
- /run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
4.linux需要掌握的知识点
作为一个后台开发人员,我们经常与服务器打交道,经常操作服务器,所以我们需要对linux系统有一定的认知.我们需要掌握的知识点:
- linux基本的原理和目录
- linux上发布项目
- linux上检查日志
- linux上检查系统的运行情况
- linux上搭建项目运行的环境
二.linux命令
1.文件夹类命令
(1) 进入
- cd 目录
进入目录 - cd …
回退到上一级目录 - cd /
回退到整个系统根目录 - cd ~
进入到用户的根目录
(2) 显示
- pwd
显示当前进入的文件目录 - ll
详细显示当前目录下所有文件,一行显示一个目录 - ls [目录]
不加参数目录则显示当前目录下所有文件,加参数则显示参数目录下的所有文件和文件夹
(3) 创建文件夹
- mkdir 目录名
创建文件夹
(4) 复制文件夹
- *cp -r resource目录 target目录 *
复制resource目录到目标路劲
(5) 移动/重命名
- mv 目录1 目录2
移动文件夹或者重命名
(6) 删除
- rmdir 文件名
删除文件夹(注意删除的文件夹必须为空) - rm -rf 文件名
递归删除文件夹,及文件夹下所有的额内容
(7) 查找
find 目录1 -name 目录2
在目录1下,查找目录2,以文件名的方式查找.
(7) 查找
1).按照文件名查找
- find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找
- find /etc -name httpd.conf #在/etc目录下文件httpd.conf
- find /etc -name ‘srm’ #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
-
find . -name 'srm’* #表示当前目录下查找文件名开头是字符串‘srm’的文件
2).按照文件特征查找 -
find / -amin -10 # 查找在系统中最后10分钟访问的文件(access time)
-
find / -atime -2 # 查找在系统中最后48小时访问的文件
-
find / -empty # 查找在系统中为空的文件或者文件夹
-
find / -group cat # 查找在系统中属于 group为cat的文件
-
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件(modify time)
-
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
-
find / -user fred #查找在系统中属于fred这个用户的文件
-
find / -size +10000c #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
-
find / -size -1000k #查找出小于1000KB的文件
(8) 权限
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
命令:ll # 显示当前目录下所有文件和文件夹的详细信息.
drw-r–r--
说明:
- 第0位代表这个文件是目录、文件或链接文件等等。
当为[ d ]则是目录
当为[ - ]则是文件;
若是[ l ]则表示为链接文档(link file);
若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一> 次性读取装置)。
- 第1-3位确定属主(该文件的所有者)拥有该文件的权限。
[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute),[ - ]代表没有该权限。 - 第4-6位确定属组(所有者的同组用户)拥有该文件的权限.
[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute),[ - ]代表没有该权限。 - 第7-9位确定其他用户拥有该文件的权限。
[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute),[ - ]代表没有该权限。
1) chgrp:更改文件属组
语法:
chgrp [-R] 属组名 文件名
2)chown:更改文件属主,也可以同时更改文件属组
语法:
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
3)chmod:更改文件9个属性
Linux文件属性有两种设置方法,一种是数字,一种是符号。
各权限的分数对照表如下:
r:4
w:2
x:1
语法:
chmod 777 文件名
`#说明,只有可执行文件才能设置x,执行的权利,文本文件最多可以设置666
2.文件类命令
本命令主要是操作文件类的命令.
(1) 创建
vi 文件名
或者
vim 文件名
创建文件,并进入编辑模式.
1)命令模式
参考文档:https://blog.youkuaiyun.com/zzti_erlie/article/details/82695305
说明:
1.vi或者vim默认进入的模式,或者任何其他模式下按Esc进入命令模式.
2.命令模式下,输入冒号:,则进入末行模式.
常用编辑相关的命令:
- yy
复制光标所在行 - p
在光标处粘贴 - dd
删除光标所在行 - u
撤销上一步操作 - 行数 gg
跳转到指定行
2)插入模式(按i/o进入插入模式)
说明:
1.命令模式下,按i或者o进入插入模式.
2.该插入模式下,按Esc进入命令模式.
3)末行模式(命令模式下,按冒号)
说明:
1.命令模式下,按冒号进入末行模式.
常用指令:
- wq
保存并退出 - q!
退出不保存 - /任意字符
在本文件查找该字符串
n表示下一处
- set nu
显示行号
(2) 删除
rm [-rf] 文件名
删除文件
(3) 复制
同文件夹相同
(4) 移动/重命名
同文件夹相同
(5) 比较
diff 文件1 文件2
(6) 显示
- cat 文件名
显示该文件全部内容 - more 文件名
分页显示文件内容
空格:下一页
b:上一页
q:退出 - less 文件名
分页显示文件内容
空格:下一页
b:上一页
q:退出 - head -行数 文件名
显示该文件头部几行 - tail -行数 文件名
显示该文件尾部几行 - tailf 文件名
显示文件最后几行,并且动态显示追加的内容,常用语本地测试,跟踪日志文件
(7) 查找
同文件夹操作
(8) 统计
- wc -l 文件名
统计文件的行数
- ls -l|grep “^d”| wc -l
ls -l :显示当前目录下所有文件和文件夹
grep “^d” : 筛选出是文件夹的,^d是文件夹;-是文件
wc -l : 显示行数
所以这行命令的意思:统计当前目录下所有的文件夹数目
(9) 权限
同文件夹操作
(10) 文本处理
linux中最为常用的三大文本(awk,sed,grep)处理工具之一
- grep [选项] ”正则表达式“ [文件]
-E :开启扩展(Extend)的正则表达式。
-i :忽略大小写(ignore case)。
-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。
-n :显示行号
-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker
-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。
-o :只显示被模式匹配到的字符串。
–color :将匹配到的内容以颜色高亮显示。
-A n:显示匹配到的字符串所在的行及其后n行,after
-B n:显示匹配到的字符串所在的行及其前n行,before
-C n:显示匹配到的字符串所在的行及其前后各n行,context
3.安全
(1)开机关机
重启命令:
- reboot
- shutdown -r now
#立刻重启(root用户使用) - shutdown -r 10
#过10分钟自动重启(root用户使用) - shutdown -r 20:35
#在时间为20:35时候重启(root用户使用)
如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启
关机命令:
- halt
立刻关机 - poweroff
立刻关机 - shutdown -h now
立刻关机(root用户使用) - shutdown -h 10
10分钟后自动关机
如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启
(2)防火墙
1)iptables防火墙
- service iptables status
查看防火墙状态 - service iptables stop
停止防火墙 - service iptables start
启动防火墙 - service iptables restart
重启防火墙 - chkconfig iptables off
永久关闭防火墙 - chkconfig iptables on
永久关闭后重启
2)firewall防火墙
-
systemctl status firewalld
查看firewall服务状态
出现Active: active (running)切高亮显示则表示是启动状态。
出现 Active: inactive (dead)灰色表示停止,看单词也行。 -
firewall-cmd --state
查看firewall的状态 -
service firewalld start
开启 -
service firewalld restart
重启 -
service firewalld stop
关闭 -
firewall-cmd --list-all
查看防火墙规则
(3)用户操作
-
useradd 选项 用户名
添加用户
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。 -
userdel 选项 用户名
删除用户 -
usermod 选项 用户名
修改用户 -
passwd 选项 用户名
修改密码 -
su 或者 su root
切换到root用户 -
su - username
切换到username用户
还有些用户组的命令就省略了
4.系统
(1)内存及cpu
-
/proc/直接查看文件信息
-
free -h
free命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。
-
top
top命令不仅可以看见整个系统的内存,cpu,以及进程等使用情况,还能对我们各个进程中对cpu和内存的占用进行监控,所以是一个非常有用的指令.
(2)进程相关
-
ps #显示进程
-A :所有的进程均显示出来
-a :不与terminal有关的所有进程
-u :有效用户的相关进程
-x :一般与a参数一起使用,可列出较完整的信息
-l :较长,较详细地将PID的信息列出 -
kill #停止进程
1:SIGHUP,启动被终止的进程
2:SIGINT,相当于输入ctrl+c,中断一个程序的进行
9:SIGKILL,强制中断一个进程的进行
15:SIGTERM,以正常的结束进程方式来终止进程
17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行
- top
#还有就是top命令也能查看进程
(3)网络相关
-
hostname
显示主机名 -
ping
用来确认网络连接是畅通的。
用来查看连接的速度信息。 -
ifconfig
查看用户网络配置 -
ifup 设备名
启动网络设备 -
ifdown 设备名
关闭网络设备
5.应用程序
(1)文件上传下载
-
rz
选择文件进行上传 -
sz 文件名
sz后面跟文件名可以进行文件从linux上面下载。
(2) 压缩与解压
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
———————————————
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName
———————————————
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
———————————————
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
———————————————
(3) 安装和卸载
yum
yum安装是连网安装,可以直接联网下载安装.
- yum -y install 包名
安装软件 - yum -y update 包名
升级特定的软件包。 - yum remove 包名
卸载软件包
rpm
rpm安装适合离线安装,需要自己先下载安装包,并且需要自己下载依赖的安装包.
-qa 查找全部的安装文件
-q 查找安装包
-qi 查找安装包详细信息
6.其他
- |
管道命令,在linux 中竖线(|)代表着管道命令,管道命令是非常有用的,竖线前的结果作为竖线后的命令的参数.
例如:
又例如