核心技术-Linux

1、Linux简介
2、VM与Linux安装
3、Linux文件与目录结构
4、VI/VIM编辑器
5、常用基本命令
6、Linux用户与权限管理
7、rpm与yum
8、搭建Linux下的开发环境

Linux

1.1 Linux的简介

开源、稳定、漏洞少
开发还在windows上
公司的测试集、服务器都在Linux上
苹果上的UNIX和Linux差不多
Linux是一套免费使用和自由传播的类UNIX系统
开源,稳定,漏洞少,一般的靠谱一点的公司都用它.
Linux是一套免费的使用和自由传播的类Unix操作系统
虚拟机中可以装多个Linux系统,做集群、分布式实验有好处在这里插入图片描述

  1. Linux的文件结构
    在这里插入图片描述

1.2 项目结构

 /bin ★ (/usr/bin 、 /usr/local/bin)
• 是Binary的缩写, 这个目录存放着最经常使用的命令
 /sbin (/usr/sbin 、 /usr/local/sbin)
• s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
 /home★
• 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
 /root★
• 该目录为系统管理员,也称作超级者的用户主目录。
 /lib
• 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
 /lost+found
• 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
 /etc★
• 所有的系统管理所需要的配置文件和子目录
 /usr ★
• 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
 /boot ★
• 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的安装别放这里
 /proc
• 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
 /srv
• service缩写,该目录存放一些服务启动之后需要提取的数据。
 /sys
• 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
 /tmp
• 这个目录是用来存放一些临时文件的。
 /dev★
• 类似于windows的设备管理器,把所有的硬件用文件的形式存储。
 /media★
• linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
 /mnt
• 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。
 /opt ★
• 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
 /usr/local ★
• 这是另一个给主机额外安装软件所摆放的目录。一般是通过编译源码方式安装的程序。
 /var ★
• 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
 /selinux
• SELinux是一种安全子系统,它能控制程序只能访问特定文件。

1.3三种模式:

  1. 一般模式
  2. 编辑模式
  3. 命令模式

1.1.1三种模式之间的切换

在命令下
4. 帮助手册
a) Man
b) –help
5. 日期类
a) Date , cal
date +%Y-%m-%d’ '%H:%M:%S
6. 现实当前目录 : pwd
7. cd切换目录
a) cd… 返回上一层目录
b) cd / 返回至/
c) cd~ 返回家目录
d) cd /etc/sysconfig 通过结对路径访问(利用tab键)
e) cd ./sysconfig 通过相对路径访问
8. ls
a) -a全部文件,连同隐藏文件
b) -l 列出详细的列表 别名ll
c) 列表信息
d)
e) D开头就是目录
f) -是文件
9. Grep
a) 配合显示内容得名,根据跟随的内容现实,该行内容
b) 例如:ls-l | grep xxx
10. mkdir (建立一个新的子目录(DOS命令))
-p 可以一下建好多级目录
例: mkdir 目录名
11. Touch(接触)
a) 新建一个文件
b) touch aa.conf
12. rmdir(删除目录)
a) 删除一个空目录
b) 例: rmdir dirname

  1. Rm
    a) 移除文件或目录
    b) -rf 递归删除所有目录内容,不提示
  2. Cp(复制)
    a) cp 【要复制的文件】 【到哪里】
    b) -r 递归复制整个文件夹
    c) -v 显示复制过程中文件的列表
    d) 强制覆盖不提示的方法
    i. 临时方法:用\cp
  3. mv
    a) mv oldFileName newFileName 重命名
    b) mv /temp/movefile /targetFolder 移动文件
  4. cat
    a) cat 文件名 查看轻量级的文本文件
    b) cat 文件1 文件2 连接显示多个文件
    c) cat 文件1 文件2 > 文件3 合并为新文件
  5. more(更多)
    a) 查看较长的文件
    b) 空白键 (space):代表向下翻一页
    c) Enter:代表向下翻一行
    d) q:代表立刻离开 more ,不再显示该文件内容。
    e) Ctrl+F 向下滚动一屏
    f) Ctrl+B 返回上一屏
  6. Less(较少)
    a) 同more类似,比more功能更多。
    b) [pagedown]:向下翻动一页;
    c) [pageup] :向上翻动一页;
    d) /字串 :向下搜寻『字串』的功能;
    e) ?字串 :向上搜寻『字串』的功能;
    f) n :重复前一个搜寻 (与 / 或 ? 有关!)
    g) N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  7. Tail(尾部)
    a) 从尾部开始查看,比较适合查看日志
    b) -f 跟随查看
    c) -n200 显示的行数,n可以省略。
  8. History(历史)
    a) 查看历史命令
  9. echo
    a) 输出环境变量
    b) 在shell脚本中当system.out.print用
  10. Find(发现)
    a) 查找文件,提供了丰富的模糊搜索及条件搜索
    b) find+搜索路径+参数+搜索关键字
    c) 按文件名:find /home/esop -name ‘*.txt’ 根据名称查找/目录下的filename.txt文件。
  11. Locate(定位)
    a) 查找文件,查询速度更快,使用更方便。
    b) 运行前需要 执行updatedb来更新文件索引。
  12. 软链接
    a) 也成为符号链接,类似于windows里的快捷方式,有自己的数据块,主要存放了链接其他文件的路径。
    b) 命令 ln –s 原文件或目录名 软链接名
    c) 查询:通过 ls -l 就可以查看,列表属性第1位是l,尾部会有位置指向。

1.4 vi和vim的区别:

Vi是白色
Vim是彩色

软连接
也成为符号

1.5 分区 (磁盘分区类)

一. Mbr

  1. 只支持4个主分区
  2. 系统只安装主分区
  3. 扩展分区占一个主分区
    二. Gpt
  4. Win7 64位以后支持
  5. 无线主分区
  6. 支持4t以上的硬盘
    在这里插入图片描述

 查看所有设备挂载情况
• 命令 :lsblk 或者 lsblk -f
在这里插入图片描述
1.1.1 向虚拟机增加一块硬盘

  1. 虚拟机插硬盘
    a) 虚拟机增加硬盘
    b) 在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,至到完成。然后重启系统!
    在这里插入图片描述
    c)
  2. 分区
    a) 分区命令 fdisk /dev/sdb
    i. 开始对/sda分区
  3. m :显示命令列表
  4. p :显示磁盘分区
  5. n :新增分区
  6. d :删除分区
  7. w :写入并退出
    b) 开始分区后输入n:(新增分区),然后选择p分区类型为主分区.两次回车默认剩余全部空间,最后w:(写入分区并退出),如果不保存就按p退出
    c) 在这里插入图片描述
    d) 在这里插入图片描述
  8. 格式化
    a) 格式化磁盘
    i. 分区命令: mkfs -t ext4 /dev/sdb1
    ii. 其中ext4是分区的类型
  9. 挂载
    a) 挂载
    i. 将一个分区与一个目录联系起来
    ii. Mount 设备名称 挂载目录
  10. 例如: mount /dev/sdb1 /newdisk
  11. Umount 设备名称 或者 挂载目录
    a) 例如: umount /dev/sdb1 或者 umount /newdisk
  12. 命令行挂载重启后会失效
    b) 永久挂载
    i. 通过修改/ect/fstab实现挂载
    ii. 添加完成后 执行mount -a 立即成效
  13. 磁盘情况查看
    a) hf -h
    i. 查询系统整体使用情况
    在这里插入图片描述
    b) du -h /目录
    i. 查询指定目录的磁盘占用情况,默认为当前目录
    ii. -s 指定目录占用大小汇总
    iii. -h 带计量单位
    iv. -a 含文件
    v. --max-depth=1 子目录深度
    vi. -c 列出明细的同时,增加汇总值
    例: du -ach --max-depth=1 /opt

1.6 Ifconfig (网络配置)

1.1.1 查看网络配置ifconfig

c) 查看网络配置
d) 如何修改IP
e) 图形化操作
f) 命令行方式 vi /etc/sysconfig/network-scripts/ifcfg-eth0
在这里插入图片描述
DEVICE=eth0 #接口名(设备,网卡)
BOOTPROTO=static
IP的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议)
BROADCAST=192.168.1.255 #广播地址
HWADDR=00:0C:2x:6x:0x:xx #MAC地址
IPADDR=192.168.1.23 #IP地址
NETMASK=255.255.255.0 # 网络掩码
NETWORK=192.168.1.0 #网络地址
ONBOOT=yes #系统启动的时候网络接口是否有效(yes/no)
TYPE=Ethernet #网络类型(通常是Ethemet)

g) vim /etc/sysconfig/network-scripts/ifcfg-eth0
h) 刷新网络设置
i) service network restart

扫描二维码关注公众号,回复: 3674307 查看本文章

1.7 ps (进程类)

 ps
• ps –aux|grep xxx
• System V展示风格
• USER:用户名称
• PID:进程号
• %CPU:进程占用CPU的百分比
• %MEM:进程占用物理内存的百分比
• VSZ:进程占用的虚拟内存大小(单位:KB)
• RSS:进程占用的物理内存大小(单位:KB)
• TT:终端名称,缩写 .
• STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
• STARTED:进程的启动时间
• TIME:CPU时间,即进程使用CPU的总时间
• COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
 ps
• ps -ef|grep xxx
• 是BSD风格
• UID:用户ID
• PID:进程ID
• PPID:父进程ID
• C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
• STIME:进程启动的时间
• TTY:完整的终端名称
• TIME:CPU时间
• CMD:启动进程所用的命令和参数
综上:
• 如果想查看进程的CPU占用率和内存占用率,可以使用aux
• 如果想查看进程的父进程ID可以使用ef

 pid
• 每个进程都有一个pid作为唯一标识。
 Kill
• Kill pid 通过唯一标识pid杀死进程的工程
 Killall
• Killall name 通过进程名杀死进程
 运行级别(runlevel)
在这里插入图片描述
开机  BIOS  /boot  init进程  运行级别  运行级对应服务

• 查看运行级别 : vi /ect /inittab

1.8 Git与GitHub

1.1.1 版本管理系统能干什么:

  1. 冲突解决
  2. 协同开发
  3. 版本记录
  4. 历史追查
  5. 代码备份
  6. 版本还原
  7. 权限管理
  8. 代码审查
  9. 分支管理

1.1.2 管理

在这里插入图片描述
经典的集中管理( CVS . VSS . SVN )

特点:
实现了大部分开发中对版本管理的需求
结构简单,上手容易
缺点:
1、版本管理的服务器一旦崩溃,硬盘损坏,代码如何恢复?
2、程序员上传到服务器的代码要求是完整版本,但是程序员开发过程中想做小版本的管理,以便追溯查询,怎么破?
3、系统正在上线运行,时不时还要修改bug,要增加好几个功能要几个月,如何管理几个版本?
4、如何管理一个分布在世界各地、互不相识的大型开发团队?
在这里插入图片描述

1.1.3 git下载

1、命令行工具:Git for windows
下载地址:https://git-for-windows.github.io/
2、 操作系统中可视化工具:TortoiseGit
下载地址: https://tortoisegit.org/
3、 Eclipse插件: Egit
Eclipse自带,插件市场搜索最新版
4、 GitHub网站
http://www.github.com

1.9 GitHub

GitHub是什么
• GitHub是一个Git项目托管网站,主要提供基于Git的版本托管服务
在这里插入图片描述

网址
https://github.com/
注册账号的注意事项
• 不要使用163的邮箱,有可能收不到验证邮件。
• 较长时间不使用有可能被Github冻结账号。请登录其客服页面https://github.com/contact,填写账号恢复申请。
在这里插入图片描述
 增加远程地址
• git remote add <远端代号> <远端地址> 。
• <远端代号> 是指远程链接的代号,一般直接用origin作代号,也可以自定义。
• <远端地址> 默认远程链接的url
• 例: git remote add origin https://github.com/user111/Helloworld.git
 推送到远程库
• git push <远端代号> <本地分支名称>。
• <远端代号> 是指远程链接的代号。
• <分支名称> 是指要提交的分支名字,比如master。
• 例: git push origin master
 从GitHub上克隆一个项目
• git clone <远端地址> <新项目目录名>。
• <远端地址> 是指远程链接的地址。
• <项目目录名> 是指为克隆的项目在本地新建的目录名称,可以不填,默认是GitHub的项目名。
• 命令执行完后,会自动为这个远端地址建一个名为origin的代号。
• 例 git clone https://github.com/user111/Helloworld.git hello_world
 从GitHub更新项目
• git pull <远端代号> <远端分支名>。
• <远端代号> 是指远程链接的代号。
• <远端分支名>是指远端的分支名称,如master。
• 例 git pull origin master
 以上对项目的操作方式,必须是项目的创建者或者合作伙伴。
• 合作伙伴添加方式如下图: 在项目中点击settings页签,然后点击Collaborators,然后在文本框中搜索合作伙伴的邮箱或者账号。点击添加。
• 添加后GitHub会给合作伙伴对应的邮箱发一封,邀请邮件。
在这里插入图片描述
 邀请你的同事成为合作伙伴
• 合作伙伴会收到邀请邮件。点击View invitation 按钮后会跳转至GitHub页面,让合作伙伴选择,是否接受邀请。
• 点击接受后,则合伙伙伴正式加入项目,获得直接提交代码的权限。
 协作冲突
• 在上传或同步代码时,由于你和他人都改了同一文件的同一位置的代码,版本管理软件无法判断究竟以谁为准,就会报告冲突,需要程序员手工解决。
在这里插入图片描述
在这里插入图片描述

Rsa非对称加密

1.1.1 番外篇:每次输密码很烦篇

 ssh模式比https模式的一个重要好处就是,每次push、pull、fetch等操作时,不用重复填写遍用户名密码。
 前提是你必须是这个项目的拥有者或者合作者,且配好了ssh key。

1.1.2 如何配置SSH key

 步骤1:检查你的电脑上是否已经生成了SSH Key 在git bash下执行如下命令
在这里插入图片描述
如果已经有这个文件包 删除就行了
 步骤2:创建SSH Key: ssh-keygen -t rsa -C [email protected]
成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。
在这里插入图片描述
 步骤3:进入.ssh文件包,打印id_rsa.pub的内容,复制全部内容
在这里插入图片描述

 步骤4.登录Github后,右上角点击setting
在这里插入图片描述
 步骤5.在左侧菜单中选择SSH and GPG keys,在右边点击New SSH key
在这里插入图片描述
 步骤6 :Title随便写,Key 把之前id_rsa.pub的内容复制进去,点击Add SSH key,设置ssh key 完成。
在这里插入图片描述
测试连通性:要改用ssh连接
在这里插入图片描述
要建立新的远程代号
git remote add originssh [email protected]:yuebuqun777888/bixiejianfa.git
以后再提交代码的时候就不用输入密码了(第一次使用会要求输入个 yes)
git push originssh master

1.1.3 Egit安装与操作现在的Eclipse下载后一般都提供Git插件了。

 现在的Eclipse下载后一般都提供Git插件了。
在Eclipse的Help中,点击About Eclipse,查看是否有该插件
在这里插入图片描述

 如果没有,菜单栏Help -> Install New Software…,在Work with中输入http://download.eclipse.org/egit/updates,勾选Eclipse Git Team
Provider和JGit,点击Next,进入安装,重启Eclipse,安装完成。
在这里插入图片描述

1.10 Linux用户与权限管理

 用户
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
• 新增用户:useradd 新用户名
• 设置密码: passwd 用户名
• 用户是否存在:id 用户名
• 切换用户:su – 切换用户名
• 查看当前用户/登录用户:whoami/ who am I
• 删除用户:userdel
 用户组
• 类似于角色,系统可以对有共性的多个用户进行统一的管理。
• 新增组:groupadd 组名
• 删除组:groupdel 组名
• 修改用户的组:usermod –g 用户组 用户名
• 增加用户时直接加上组:useradd –g 用户组 用户名
 系统中用户和组的相关文件
• 用户(user)的配置文件: /etc/passwd
• 每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
• 口令的配置文件: /etc/shadow
• 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
• 组(group)的配置文件: /etc/group
• 每行含义:组名:口令:组标识号:组内用户列表
 文件的全限管理
• 再说ls -l
在这里插入图片描述
• 0-9位说明
• 第0位确定文件类型(d, - , l , c , b)
• 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。—User
• 第4-6位确定所属组(同用户组的)拥有该文件的权限,—Group
• 第7-9位确定其他用户拥有该文件的权限 —Other
 作用到文件
• 作用到文件
• [ r ]代表可读(read): 可以读取,查看
• [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
• [ x ]代表可执行(execute):可以被系统执行
 作用到目录
• 作用到目录
• [ r ]代表可读(read): 可以读取,ls查看目录内容
• [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
• [ x ]代表可执行(execute):可以进入该目录
 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
• chmod u=rwx,g=rx,o=x 文件目录名
• 相当于 chmod 751 文件目录名
在这里插入图片描述

 chown
• chown newowner file 改变文件的所有者
• chown newowner:newgroup file 改变用户的所有者和所有组
• -R 如果是目录 则使其下所有子文件或目录递归生效
 chgrp
• chgrp newgroup file 改变文件的所有组

猜你喜欢

转载自blog.csdn.net/AthlenaA/article/details/83115355