Linux

1、认识Linux

 1.1、大纲

  • 了解Linux系统
  • 安装Linux虚拟机
  • 学习Linux的常用命令***
  • 多用户以及权限学习***
  • Linux实战
  • Linux基础精华

 1.2、学习Linux之前先认识Unix

  • Unix是一个强大的多用户、多任务操作系统。
  • 于1969年在AT&T的贝尔实验室开发。
  • UNIX的商标权由国际开放标准组织(The Open Group)所拥有。
  • UNIX操作系统是商业版,需要收费,价格比Microsoft Windows正版要贵一些。

 1.3、认识Linux

  

  Linux是基于Unix的,并不是在Unix的基础上开发而是参考它的思想开发的!

 1.4、Linux历史

  Linux最初是由芬兰赫尔辛基大学学生Linus Torvalds由于自己不满意教学中使用的MINIX操作系统,所以在1990年底由于个人爱好设计出了LINUX系统核心。后来发布于芬兰最大的ftp服务器上,用户可以免费下载,所以它的周边的程序越来越多,Linux本身也逐渐发展壮大起来,之后Linux在不到三年的时间里成为了一个功能完善,稳定可靠的操作系统.

 1.5、Linux的应用领域

  • 服务器系统(目前应用最多的)
    • Web应用服务器、数据库服务器、接口服务器、DNS、FTP等等;
  • 嵌入式系统
    • 路由器、防火墙、手机、PDA、IP 分享器、交换器、家电用品的微电脑控制器等等,
  • 高性能运算、计算密集型应用
    • Linux有强大的运算能力。
  • 桌面应用系统
  • 移动手持系统(安卓就是安装在linux系统上的)

 1.6、Linux的版本说明

  • Linux的版本分为两种:内核版本和发行版本
  • 内核版本是指在Linus领导下的内核小组开发维护的系统内核的版本号;
  • 发行版本是一些组织和公司根据自己发行版的不同而自定的;

 1.7、Linux主流产品(都是发行版的)

  

  :全球最大的Linux发行版的发行商,用的人最多的(很多大公司用的),收费。

  :看作是小红帽的免费版。

  :全球市场市场占有率最高的操作系统。在中国市场占有率并不高。

2、安装Linux

 2.1、安装Linux虚拟机

  • 什么是虚拟机?
    • 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整通过软件计算机系统。
  • VirtualBox
    • VirtualBox 是一款开源虚拟机软件。VirtualBox 是由德国Innotek 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在Sun 被Oracle 收购后正式更名成Oracle VM VirtualBox。
  • Centos
    • CentOS 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本。

 2.2、网络设置

  • 首先ping一下,看是否能上网
  • 未通过,,window中通过ipconfig,而linux中用ifconfig(补充:Tab键可联想填补)查看网卡
  • 激活网卡,设置Ip参考《设置固定IP.doc》

 2.3、设置快捷键

  管理—>全局设定:

  

 2.4、文件系统

  wintdows:
  

  • Windows磁盘分区格式:FAT16,FAT32,NTFS,exFAT
  • Linux磁盘分区格式:与其它操作系统完全不同,共有两种。一种是Linux Native主分区,一种是Linux Swap交换分区。常见磁盘文件系统格式为:Ext2,ext3和ext4

 2.5、Linux的组成

  

  • COMPUTER RESOURCES系统资源
  • 内核(KERNEL)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。
  • Shell是系统的用户界面,提供了用户和内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。但它不仅是命令解释器,而且还是高级编程语言,shell编程。
  • 文件系统:文件系统是文件存放在磁盘等存储设备上的组织方法,Linux支持多种文件系统,如ext3,ext2,NFS,SMB,iso9660等
  • 应用程序:标准的Linux操作系统都会有一套应用程序例如X-Window,Open Office等

 2.6、Linux的目录结构

  

  • Linux的目录结构是一个树形结构,“/”是Linux的根目录。(它没有c盘,只有一个“/”根目录)
  • Bin:操作命令文件
  • Etc:放配置文件
  • Home:linux本身是一个多用户系统,所有用户的根目录都是在home目录下
  • Root:特殊目录,只有超级管理员root用户有这个操作权限,其他用户没有操作权限
  • User:一般用户安装软件都装在此目录
  • Var:保存系统运行时的日志、临时文件

 2.7、远程登录Linux

  • 使用CRT软件:






    连上后,黑框直接exit即可!
  • 使用CRT注意修改外观及编码

3、常用命令

 3.1、关机、重启

  • 关机
    • shutdown -h now  (立刻关机
    • shutdown -h 5  (5分钟后关机)
    • poweroff  (立刻关机)
  • 重启
    • shutdown -r now (立刻重启)
    • shutdown -r 5 (5分钟重启)
    • reboot (立刻重启)
  • shutdown –help帮助

实际中,是不操作关机重启的,一般这些命令会被禁掉!

 3.2、远程登录

  • 使用CRT等客户端软件登录;
  • 使用ssh登录(登录到另一个系统);
    • ssh -l 用户名 -p 端口目标机器IP
  • 退出
    • exit (退出当前登录)

 3.3、帮助命令

  • Linux的命令非常之多,不可能都记得住使用方法;
  • 使用帮助命令--help
    • shutdown--help
    • ssh –help   (无效,解决: yum -y install openssh-clients
    • ifconfig --help (查看网卡信息)
  • 使用man命令(命令说明书)
    • man shutdown   (无效,解决:yum install man)

 3.4、Linux下查看系统版本信息

  • 查看Linux内核版本命令(两种方法)
    • cat[more] /proc/version
      [root@localhost ~]# cat /proc/version
      Linux version 2.6.18-194.8.1.el5.centos.plus (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Wed Jul 7 11:50:45 EDT 2010
    • uname -a
      [root@localhost ~]# uname -a
      Linux localhost.localdomain 2.6.18-194.8.1.el5.centos.plus #1 SMP Wed Jul 7 11:50:45 EDT 2010 i686 i686 i386 GNU/Linux
  • 查看Linux系统版本的命令(3种方法)
    • lsb_release -a,即可列出所有版本信息
      [root@localhost ~]# lsb_release -a
      LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
      Distributor ID: CentOS
      Description: CentOS release 5.5 (Final)
      Release: 5.5
      Codename: Final

      这个命令适用于所有的Linux发行版,包括Redhat、SuSE、Debian…等发行版。

    • cat[more] /etc/redhat-release,这种方法只适合Redhat系的Linux
      [root@localhost ~]# cat /etc/redhat-release
      CentOS release 5.5 (Final)
    • cat[more] /etc/issue,此命令也适用于所有的Linux发行版
      [root@localhost ~]# cat /etc/issue
      CentOS release 5.5 (Final)
      Kernel \r on an \m

 3.5、cd命令

  • cd app  ➔切换到app目录
  • cd..  ➔切换到上一层目录
  • cd /  ➔切换到系统根目录
  • cd    ➔切换到用户主目录(home)
  • cd -  ➔切换到上一个所在目录

 3.6、列出文件列表:ll,ls,dir

  

  1. 在linux系统中隐藏文件是以"." 开头的文件;
  2. 使用ll -a 查看所有文件,包括隐藏文件;
  3. ll显示更全,ls和dir效果相同[ls命令用法详解]
  4. ll –h  友好显示文件大小,如kb、mb

 3.7、mkdir和rmdir

  • mkdir(make directory)命令可用来创建子目录。
    • mkdir app  ➔在当前目录下创建app目录
    • mkdir –p app2/test  ➔级联创建aap2以及test目录
  • rmdir(remove directory)命令可用来删除“空”的子目录:
    • rmdir app  ➔删除app目录
  • 补充:将光标切换行最前(Ctrl+a)、最后(Ctrl+e)

 3.8、浏览文件cat,more,less

  • cat
    • 用于显示文件的内容(小文件)。
    • 格式:cat[参数]<文件名>
  • more
    • 一般用于要显示的内容会超过一个画面长度的情况。
    • 按空格键显示下一个画面。
    • 按q 键退出查看。
  • less
    • 用法和more类似,不同的是less可以通过PgUp、PgOn和空格键来控制。

注意: cat一般用于小文件,more查看大文件内容;

 3.9、tail

  • tail命令是在实际使用过程中使用非常多的一个命令,它的功能是:用于显示文件后几行的内容。
  • 用法
    • tail -10 /etc/passwd  ➔查看后10行数据
    • tail -f catalina.log  ➔动态查看日志
  • ctrl + c  结束查看

 3.10、sed查看某时间段日志

  sed -n '/2016-07-11 13:41:00/,/2016-07-11 13:42:00/p' xxx.log

 3.11、文件删除-rm

  • rm  删除文件
    • 用法:rm [选项]... 文件...
    • rm a.txt  ➔删除a.txt文件
    • 删除需要用户确认,y/n
  • rm 删除不询问
    • rm -f a.txt  ➔不询问,直接删除
  • rm 删除目录
    • rm -r a  ➔级联、递归删除
  • 不询问递归删除(慎重)
    • rm -rf  a  ➔不询问递归删除(慎重)
    • rm -rf *   ➔删除所有文件
  • rm -rf /*   ➔自杀

 2.12、文件拷贝-cp、移动-mv、传输-scp

  • cp(copy)命令可以将文件从一处复制到另一处。一般在使用cp命令时将一个文件复制成另一个文件或复制到某目录时,需要指定源文件名与目标文件名或目录。
    • cp a.txt b.txt  ➔将a.txt复制为b.txt文件
    • cp a.txt ../  ➔将a.txt文件复制到上一层目录中
  • mv 移动或者重命名
    • mv a.txt ../  ➔将a.txt文件移动到上一层目录中
    • mv a.txt b.txt  ➔将a.txt文件重命名为b.txt
  • scp传输文件到服务器
    • scp -r ./***.war localadmin@IP:~
      [文件传输目的地:/home/localadmin/]

 3.13、压缩/解压-zip,tar,tar.gz,tar.bz2

  1. ZIP
    zip可能是目前使用得最多的文档压缩格式。它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用。缺点就是支持的压缩率不是很高,而tar.gz和tar.gz2在压缩率方面做得非常好。
    • 压缩
      • zip -r xxx.zip ./*
    • 解压
      • unzip xxx.zip
  2. TAR,TAR.GZ

    tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件,再以gizp压缩命令压缩成xxx.tar.gz(或称为xxx.tgz)的文件,即tar.gz。它在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。

    • 常用参数:
      • -c:创建一个新tar文件
      • -v:显示运行过程的信息
      • -f:指定文件名
      • -z:调用gzip压缩命令进行压缩
      • -t:查看压缩文件的内容
      • -x:解开tar文件
    • 总结:
      • tar -cvf xxx.tar ./*➔打包当前目录的所有文件以及目录,不压缩
      • tar -czvf xxx.tar ./*   ➔打包当前目录的所有文件以及目录,压缩
      • tar -xvf xxx.tar.gz  ➔解压
      • tar -xvf xxx.tar.gz  -C /tmp/xxx/➔解压并指定解包路径
  3. TAR.BZ2
    tar.bz2这种压缩格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间
    • 压缩
      • tar -jcvf xxx.tar.bz2 ./*
    • 解压
      • tar -jxvf xxx.tar.bz2 -C /tmp/xxx/

 3.14、pwd,wget,touch等常用命令

  • pwd  显示当前所在目录
  • touch 创建一个空文件
    • touch a.txt 
  • wget 下载资源  (无效,解决:yum -y install wget)

 3.15、文件编辑器-vi

  • 在Linux下一般使用vi编辑器来编辑文件。
  • vi既可以查看文件也可以编辑文件。
  • 三种模式:命令行、插入、底行模式。
    • 切换到命令行模式:按Esc键;
    • 切换到插入模式:按i 、o、a键;
    • 切换到底行模式:按:(冒号);
  • 更多详细用法,查询文档《Vim命令合集.docx》《vi使用方法详细介绍.docx》
  • 保存并且退出::wq
  • 退出不保存::q!
  • 直接退出(未改动情况下)::q

  • 快捷键:
    • 大写的G跳到最后一行
    • 双d(快速):删除当前行[适用于切换插入模式前]
    • 搜索:在命令行模式下输入":/搜索内容"回车,按"n"查找下一个

 3.16、重定向输出-‘>’和‘>>’

  • >重定向输出;
  • >>重定向输出,又追加功能;
  • 示例:
    • cat /etc/passwd > a.txt  将输出定向到a.txt中
    • cat /etc/passwd >> a.txt  输出并且追加

 3.17、管道-‘|’ 

  • 管道是Linux命令中重要的一个概念,其作用是将一个命令的输出用作另一个命令的输入。
  • 示例
    • ls --help | more  分页查询帮助信息
    • ps –ef | grep java  用标准的格式来显示名称中包含java的进程
      • 显示的项目有:UID , PID , PPID , C , STIME , TTY , TIME , CMD
    • ps aux | grep java 用BSD的格式来显示名称中包含java的进程
      • 显示的项目有:USER , PID , %CPU , %MEM , VSZ , RSS , TTY , STAT , START , TIME , COMMAND
    • grep -rn "2015-10-12 20:20" catalina.out 输出catalina.out文件中某个时间点的日志记录

 3.18、执行控制命令-‘&&’

  • 命令之间使用&&连接,实现逻辑与的功能。
  • 只有在&&左边的命令返回真(命令返回值$? == 0),&&右边的命令才会被执行。 
  • 只要有一个命令返回假(命令返回值$? == 1),后面的命令就不会被执行。

启动tomcat后立刻查看日志:

./xxx.sh start && tail –f ../log/xxx.log

 3.19、网络通讯命令-‘ifconfig’、‘ping’、‘netstat’

  • ifconfig  显示或设置网络设备。
    • ifconfig  显示网络设备
    • ifconfig eth0 up 启用eth0网卡
    • ifconfig eth0 down  停用eth0网卡
  • ping   探测网络是否通畅。
    • ping 192.168.0.1
  • netstat 查看网络端口。
    • netstat -an | grep 3306 查询3306端口占用情况

 3.20、网络常见问题

  • mac地址不一致问题:
    • 修改成一致的mac地址;
    • 删除文件:rm -rf /etc/udev/rules.d/70-persistent-net.rules(网卡于max地址一一对应配置,这里删除,重启以重新生成)
    • 重启虚拟机
  • 没有设置开机启动
    • chkconfig --level 2345 network  on

 3.21、系统管理命令一-‘date’、‘df’、‘free’、‘top’

  • 查看物理CPU个数、核数、逻辑CPU个数
    # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 
    # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
    
    # 查看物理CPU个数
    cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
    
    # 查看每个物理CPU中core的个数(即核数)
    cat /proc/cpuinfo| grep "cpu cores"| uniq
    
    # 查看逻辑CPU的个数
    cat /proc/cpuinfo| grep "processor"| wc -l
    
    #查看CPU信息(型号)
    cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
  • date 显示或设置系统时间
    • date  显示当前系统时间
    • date -s “2014-01-01 10:10:10“  设置系统时间
  • df 显示磁盘信息
    • df -h  查看每个根路径分区大小
    • df -hl 查看磁盘剩余空间
  • free 查看内存使用情况
    • free –m 以mb单位显示内存组昂头
  • top 显示,查看内存及cpu使用情况
    • 查看服务器负载,一般10已经挺高的了!(当服务器运行变慢的时候,查看服务器负载,服务器负载高的话,查看下边哪个进程导致的!)

  

  • 安装htop工具,这样更直观,
    • 安装命令如下:sudo apt-get install htop,安装完后,直接输入命令:htop,就可以看到内存或cpu的使用情况了。

 3.22、系统管理命令二-‘clear’、‘ps’、‘kill’

  • clear 清屏幕
  • ps 正在运行的某个进程的状态
    • ps –ef  查看所有进程
    • ps –ef | grep ssh 查找某一进程
  • kill 杀掉某一进程
    • kill 2868  杀掉2868编号的进程
    • kill -9 2868  强制杀死进程

 3.23、系统管理命令三-‘du’、‘who’、‘hostname’、‘uname’

  • du 显示目录或文件的大小。
    • du –h 显示当前目录的大小
    • du -sh [目录名] 返回该目录的大小
    • du -sm [文件夹] 返回该文件夹总M数
    • du --help 查看更多功能
  • df 以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息
    • df -hl 查看磁盘剩余空间

    • df -h 查看每个根路径的分区大小

    • df --help 查看更多功能
  • 查看硬盘的分区 #sudo fdisk -l

    查看IDE硬盘信息 #sudo hdparm -i /dev/hda

    查看STAT硬盘信息 #sudo hdparm -I /dev/sda 或 #sudo apt-get install blktool #sudo blktool /dev/sda id

  • who 显示目前登入系统的用户信息。
  • hostname 查看当前主机名
    • 修改:vi /etc/sysconfig/network
  • uname 显示系统信息。
    • uname –a 显示本机详细信息。依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称

 3.24、用户操作命令-‘useradd’、‘passwd’、‘userdel’

  • useradd 添加一个用户
    • useradd test 添加test用户
    • useradd test -d /home/t1  指定用户home目录
    • useradd test –g public 指定用户组
  • passwd  设置、修改密码
    • passwd test  为test用户设置密码
  • userdel 删除一个用户
    • userdel test 删除test用户(不会删除home目录)
    • userdel –r test  删除用户以及home目录

 3.25、用户组操作命令-‘groupadd’、‘groupdel’

  • 当在创建一个新用户user时,若没有指定他所属于的组,就建立一个和该用户同名的私有组。创建用户时也可以指定所在组  useradd test –g public
  • groupadd  创建组
    • groupadd public  创建一个名为public的组
    • useradd u1 –g public  创建用户指定组
  • groupdel 删除组,如果该组有用户成员,必须先删除用户才能删除组。
    • groupdel public

 3.26、id命令

  • 功能:查看一个用户的UID和GID
  • 用法:id [选项]... [用户名]

 

 3.27、su命令

  • 功能:切换用户。
  • 用法:su [选项]... [-] [用户[参数]... ]
  • 示例:
    • su u1  切换到u1用户
    • su – u1 切换到u1用户,并且将环境也切换到u1用户的环境(推荐使用)
    • sudo -i 临时切换超级用户root(推荐使用)

 3.28、用户文件

  • vi /etc/passwd

  

 3.29、密码文件

  • vi /etc/shadow

 3.30、组文件

  • vi /etc/group

 3.31、权限

  • 主权限:文件所属用户权限

  • 组权限:同组的其他人对这个文件所拥有的权限
    • Linux三种文件类型
      • 普通文件:包括文本文件、数据文件、可执行的二进制程序文件等。
      • 目录文件:Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。
      • 设备文件:Linux系统把每一个设备都看成是一个文件。
    • 文件类型标识
      • 普通文件(-)
      • 目录(d)
      • 符号链接(l)
      • 字符设备文件(c)
      • 块设备文件(s)
      • 套接字(s)
      • 命名管道(p)

        补充:软链接——相当于window中快捷方式,修改软链接文件对应真是的文件也会被修改!

                 硬链接——两个文件都存在硬盘上,是同步的,改其中一个,另一个也会更改!

    • 文件权限管理
      • chmod 变更文件或目录的权限。
        • chmod 755 a.txt
        • chmod u=rwx,g=rx,o=rx a.txt
        • chmod 000 a.txt  / chmod 777 a.txt
        • sudo chmod -R 777 /Users/cbb/xxx/xxx  
      • chown 变更文件或目录的拥有者或所属群组。
        • chown u1:public a.txt
        • chown -R u1:public dir 

          注意:chown命令只能是root执行。

 3.32、设置或显示环境变量-‘export’

  Linux export命令用于设置或显示环境变量。

  • 语法
    export [-fnp][变量名称]=[变量设置值]
  • 参数说明
    • -f  代表[变量名称]中为函数名称。
    • -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
    • -p  列出所有的shell赋予程序的环境变量。
  • 实例
    #mac 中禁止Homebrew自动更新
    export HOMEBREW_NO_AUTO_UPDATE=true
    
    #查看设置
    echo HOMEBREW_NO_AUTO_UPDATE

4、Linux实践

 未完待续。。。

posted @ 2016-04-15 17:27  灰太郎^_^  阅读(505)  评论(0编辑  收藏  举报