分类1:图形化版(没有Windows好看)和服务器版(性能稳定,一些独特优势)
分类2:内核版本和发行版本。Linux是开源的,内核版本即是原生的,免费的。发行版本是二次开发,各种发行公司开发了好多种,如ubuntu(免费,图形化界面比较华丽)、CentOS(阿里云服务器、目前公司IMSVA产品),等等..
安装:开发或学习中,一般会在Windows上安装虚拟机,然后在虚拟机中安装Linux系统。本人亲测的VMware虚拟机和CentOS7,安装步骤不陈述,资源如下
虚拟机链接:https://pan.baidu.com/s/1brhihv5密码:h8hd ;CentOS7文件超过4G(需要官网自己下载) 。
注:vmware有快照功能,类似一键恢复。一般在新建环境后,保存快照(snapshot),注意要先关闭linux系统(不然时间我也不知道要多久,还关不掉,我重装系统了..)
常用辅助工具:Xshell5(远程连接)、Xftp5(win和linux系统的文件管理),链接:https://pan.baidu.com/s/1ggoRpSJ密码:chpy
有开发过程中服务器一般不在本地,故需要远程链接,而且Xshell工具更加顺手,一些功能更加便捷;Xftp5(本地Windows环境硬盘文件与Linux环境下文件的上传下载
上图时Xshell远程连接登陆界面。
ftp软件如下图:
第二部分:linux常用指令
Linux目录结构
区分文件和目录(文件夹),目录包含文件,文件存放在目录下
/ :是根目录(顶级目录)
bin:存放二进制可执行文件
sbin:root才能访问的二进制可执行文件
usr :存放共享的系统资源,类似于Windows下的programfiles
lib :类库
等等,不做具体介绍,
一.目录相关
1. cd 访问目录
区分 : 绝对路径(全路径)与相对路径(相对当前目录)
绝对路径 例:cd /opt/trend/imss 访问根目录下的opt目录下的trend目录下的imss目录
例:cd / 访问根目录(个人理解绝对路径就是从根目录开始写,一直到访问的那个子目录)
相对路径 例:cd .. 或 cd ../ 访问当前目录的上一级目录(相对的)
例:cd trend 访问当前目录(当前目录为/opt)下的子目录trend
例:cd ../etc/sysconfig 访问当前目录的上级目录下子目录下etc目录的子目录sysconfig
小技巧: tab键有自动补全名字和提示的功能
2.查看当前所在目录 pwd
3. ls 目录
例:ls 列出当前目录下子目录和文件
例:ls /opt/trend/imss 列出指令目录下子目录和文件 ls ../etc/sysconfig/
条件 -a -l 等等,放在ls 与目录之间
例:ls –a /opt 列出指令目录下子目录和文件(包含隐藏文件)
例:ls –l 列出当前目录下子目录和文件的详细属性(包含权限、创建时间等..)可简写为ll
例:ls –al /opt 两种条件组合(多了隐藏文件+详细属性),
注:像这种条件组合,之后的各种操作会常见,具体分析
4. mkdir 目录
mkdir 目录名
mkdir /opt/ 目录名 两条语句分别在当前目录和指定目录创建了新的目录
5 .rm 目录
rm –r 目录名 例:rm –r /opt/trend 删除/opt/trend目录下的所有子目录和文件(-r就是条件,删除包括子目录 及递归删除)
rm –rf 目录名 例:rm –rf trend 删除当前目录下trend目录的所有子目录和文件 (-f 是条件,强制删除)
注:-r 和-f 组合成 –rf
6.cp 目录
cp –rf 目录名称 位置 例:cp –rf imss /opt/ 将当前目录中的imss目录(及子目录)拷贝到/opt/路径下
cp –rf /opt/trend/imss /opt (假设上例的当前目录为/opt/trend),那两例执行结果一样
注:-a 是条件将目录的所有信息拷贝(包括权限信息)
-f 是条件不要询问y Or n ,实际开发如遇到-f 条件后仍询问,傻瓜做法在cp前加\ 例:\cp –rf 目录名 新位置
7.find 目录 条件 查找内容
例:find /opt –name “*dmarc*” 查找/opt目录及其子目录下,名字中含有“dmarc”的目录或文件
二.文件
1.touch 文件名
例:touch dome.sh 在当前目录下创建了一个demo.sh文件
2.查看文件
cat/more/less/ltail等指令均可查询文件
cat 文件名 例:cat dome.sh 查看dome.sh文件的最后一屏内容
一般查看内容较少的文件,用cat。
随着Xshell工具的出现,在Windows下连接linux系统(有滚动条),cat查看即可。
3.vi/vim 文档编辑器
个人只用过vi
vi 文件名 >>进入查看模式,方向键上下到要编辑的位置>>按下键盘i >>进入编辑模式 >>编辑完成,按下键盘Esc键>>退出到查看模式>>输入冒号:>>然后输入退出指令>>wq+回车(保存退出)<<q!(强制不保存退出)>>完成编辑
注:正常的开发过程,都是在windows上开发,然后放到Linux服务器上调试,调试过程中需要修改linux下的一些配置文件,则需要用到vi指令。(如远程debug调试时修改Tomcat.sh文件)
4.chmod 750 文件名
如图 ls –l 查看文件权限
第一列文件权限,由十个字符组成,将分割成1~3~3~3
第一个位置 d代表目录 -代表文件
第2~4位置 代表属主权限 r代表读取权(4) w代表写入权(2) x代表执行权(1) –代表此位置无权限(0)
在属主权限里,如果有读取权,则第2位置为r,否则为-
如果有写入权,则第3位置为w,否则为-
如果有执行权,则第4位置为x,否则为-
第5-7位置 代表属组权限 同理
第8-10位置 代表其他用户权限 同理
例:
chmod 750 demo.sh 修改domo.sh权限,7(4+2+1)代表属主,有读取权、有写入权、有执行权 >>rwx
5(4+0+1)代表属组,有读取权、无写入权、有执行权 >>r-x
0(0+0+0)代表其他,无读取权、无写入权、无执行权 >>---
5.tar 目录或文件的打包压缩及解压
tar –zcvf 打包压缩后的名字 打包目录或文件
>>> 例:tar –zcvf imss.dmarc.20180207.tar.gzimss 将当前目录下的imss目录打包压缩为” imss.dmarc.20180207.tar.gz”
tar –xvf 要解压的文件名字
>>> 例:tar –xvf imss.dmarc.20180207.tar.gz 将其解压到当前位置(注:解压后报名为原名,即imss)
tar –xvf 要解压的文件名字 –C 指定的解压位置
6.grep 查找文件内容
grep 要查找的内容 文件名字 例:grep echo /opt/mytest/dome.sh 搜索dome,sh文件中包含”echo”的部分
三.系统的指令
1.ifconfig >>查看网络连接
注:重启网卡遇到问题,链接 >> https://jingyan.baidu.com/article/e75aca85006645142edac6df.html
2.netstat-an 端口号 >>查看端口情况
3.ps –ef >>查看当前系统中运行的进程
4 | 管道
A | B 管道左边的东西A作为管道右边东西B的输入
例: ps –ef | grep damrc 查询当前运行进程中包含dmarc的进程
第三部分:实际使用中例子分析
需求:由于系统新添加了DMARC功能,在开发完成后,需要将编译通过的class文件及jsp文件一次性替换或新添到已有虚拟机环境中。
做法:写了以下的简单的shell脚本(个人理解,就是把一些命令行下需要手动一个一个敲的指令,加之条件判断,语法限制,封装成一个文件,使其自动有序执行)
-
#!/bin/bash
-
#
-
-
tar xvf imss.dmarc.debug.20180207.tar
-
chmod
750 imss -R
-
chown imss:imss imss -R
-
ps -elf|grep imssmgr
-
/opt/trend/imss/script/imssctl.sh stop
-
\cp -rf /opt/trend/imss/bin /opt/trend/imss/bin_org
-
\cp -rf /opt/trend/imss/lib /opt/trend/imss/lib_org
-
\cp -rf /opt/trend/imss/config /opt/trend/imss/config_org
-
\cp -a imss ../trend/
-
/opt/trend/imss/script/imssctl.sh start
-
sleep
180
-
ps -elf|grep imssmgr
-
/opt/trend/imss/PostgreSQL/bin/psql imss sa -f /opt/trend/imss/script/InsertDmarc.sql
-
sleep
5
-
echo
"All works are ready and begin to restart!! "
-
/opt/trend/imss/script/imssctl.sh restart
-
sleep
180
-
ps -elf|grep imssmgr
>>前两行进行声明
>>tar 解压文件到当前目录(打包之前的目录名为imss)
>>修改imss目录及子目录(-R)下所有文件的权限为750
>>修改文件的属组
>>查看当前imssmgr进程状态(看进程号,,比较下次这个模块有没有重启过)
>>执行imssctl.sh脚本 停止系统
>>拷贝系统原有三个文件并重命名,方便回滚
>>拷贝imss 目录,通过相对地址复制到trend目录下(该目录下存放原有imss目录),对其已有文件进行覆盖替换,新添文件完成拷贝
>>执行脚本打开系统,并使其延时180秒,并查看现在imssmgr进程号
>>执行sql语句对数据库表进行更新
>>再次重启,完成更新。