linux学习笔记

檀老师总结Linux;
(一)知识目标
    1.理解什么是LINUX
    2.掌握虚拟主机软件的使用
    3.掌握linux系统的安装
    4.掌握对linux系统中目录的操作
    5.掌握对linux系统中文件的操作
    6.掌握对linux系统中用户的操作
    =================================================================
    7.掌握对linux系统中软件的安装、卸载、更新
    8.掌握在linux中php环境的搭建
    9.掌握在linux中SVN的安装和使用
    
    =================================================================
    10.掌握软件开发的周期
    11.掌握如何设计数据库范式
    12.掌握如何使用powerdesign创建E-R图、生成数据字典、导出sql
    13.掌握使用ThinkPHP框架进行学生选课系统项目的开发

(二)能力目标
    1.本月整体速度目标:
    利用5天时间完成学生选课系统,主要的功能模块有:
        (1)利用linux环境+SVN+thinkPHP框架+js正则验证+COOKIE登录后进行学生登录
        (2)利用linux环境+SVN+thinkPHP框架+js正则验证+COOKIE登录后进行教师登录
        (3)利用linux环境+SVN+thinkPHP框架+表设计+教师选课
        (4)利用linux环境+SVN+thinkPHP框架+表设计+学生发表建议
        (5)利用linux环境+SVN+thinkphp框架+表设计+学生添加好友
    周考月考时:用三个小时的时间可以完成其中任意一个功能模块

(三)教学内容及考核要求
    第一单元:Linux系统简介及安装;
    第二单元:Linux 文件常用命令
    第三单元:Linux 目录常用命令
    第四单元:Vim/Vi 文本编辑器应用
    第五单元:Linux 系统管理&软件安装

    第六单元:Linux 用户及用户组管理
    第七单元:Linux 进程管理
    第八单元:Shell 编程
    第九单元:Linux 网络管理

    第十单元:LAMP  环境搭建及管理

    第十一单元:项目搭建和SVN安装


    第十二单元:软件工程
    第十三单元:业务流程图&功能模块图
    第十四单元:数据库范式
    第十五--十九单元:项目实战!





setup  图形界面 关闭防火墙

Linux 待处理的问题列表  
    一、文件操作命令 【×】
        touch a.php     #创建空文件
        cp 1.php 2.php     #复制文件
        mv 1.php a/1.php #移动文件
        more         #
        head -n 文件名     #文件头几行
        tail -n 文件名   #文件尾几行
        cat              #查看文件
        less a.php       #查看文件
            q:退出
            h:显示帮助
            空格:下一页
            b:上一页
            g:到第一行
            G:到结尾
            /pattern 向下查找模式为pattern的词
            / 向下查找上一次使用的模式的词
            n 【继续查找下一个关键词】

            ?pattern 向上查找模式为pattern的词
            ? 向上查找上一次使用的模式的词
        文件查找命令:
            find:
                find / -name filename(文件名)
                find / -user user(用户)
                find ./ -size +100k(文件大小)
            locate  
                数据库:/var/lib/mlocate  配置项:/etc/updatedb.conf  命令:updatedb
            
            whereis
                
            说明:
                当我们用whereis和locate无法查找到我们需要的文件时,可以使用find,但是find是在硬盘上遍历查 找,因此非常消耗硬盘的资源,而且效率也非常低,
                因此建议大家优先使用whereis和locate。
                locate 是在数据库里查找,数据库大至每天更新一次。
                whereis 可以找到可执行命令和man page
                find 就是根据条件查找文件。
                which 可以找到可执行文件和别名(alias)

    二、目录操作命令 【×】
        mkdir -m 777   #创建最高权限的目录
        mkdir -p b/c/d #递归创建目录
        rmdir 目录名   #删除空目录
        rm -fr /usr/lib/mysql (强制递归删除)
            f:强制删除,不需要确认
            r:递归删除目录及其内容
        chmod 777 目录/文件名 #修改目录或文件权限
        chown -R apache blog  #修改blog文件夹的所有者 为 apache
        chgrp -R apache blog  #修改组




    三、用户操作
        id 用户名  #用户的相关Id
        su 用户名  #切换用户
        who       #当前用户详情
        users      #查看当前登录的用户
        sudo       #sudo 授权许可使用的su,也是受限制的su
        whoami     #显示当前终端上的用户名
        useradd 用户名 #创建一个新的用户帐号
            -g 指定该用户的首要组
            -G 指定该用户的次要组
            -d 指定该用户的Home目录
            -p 指定该用户的密码

            实例:useradd ora -g oinstall -G dba -d /home/oracle -p ora12
        userdel 用户名 #删除一个已存在的账号
        groupadd 组名  #创建一个新的用户组
        groupdel 组名  #删除一个已存在的用户组
        passwd           #改变自己的口令;超级用户可以修改用户的口令 passwd 用户名

        /etc/group  文件是用户组的配置文件。
        /etc/passwd 文件是用户的配置文件。
        使用cat、more、less、head、tail以及vim等命令都可以查看、修改这两个配置文件。


    五、文件权限问题
        权限八进制表示法:
            1(x) 2(w)4(r)
        用户组包含了:
            文件属主(u) 文件数组(g) 其它人(o) ||   所有人(a)
        更改文件权限实例:
            chmod u+x days
            chmod ug=rw,o+r days
            chmod 711 prog 【更多的使用这种方法】

            更改所属组   chgrp 语法:chgrp  [组名]  [文件名]
            更改所属用户 chown
                语法: chown [ -R ] 账户名 文件名 chown [ -R ] 账户名:组名 文件名
                这里的-R选项只作用于目录,作用是级联更改,即不仅更改当前目录,连目录里的目录或者文件全部更改。


        命令与权限的关系:【重要】
            进入目录:该目录至少具有可 x 权限
            查阅目录:该目录必须有 r、x 权限

            修改文件:该文件必须有 r、w 权限
        
        注意:
            只有文件的属主和root用户才有权修改文件的权限。

        
    六、用户和用户组管理 (学习笔记)
        基础知识:
            用户:使用操作系统的人
            用户组:具有相同系统权限的一组用户
        
        1、用户(组)管理:
            useradd san
            userdel san
            /etc/passwd #用户列表

            passwd san  #创建密码
            /etc/shadow #密码列表

            groupadd team
            groupdel team
            /etc/group  #组列表
        2、演示流程
            root用户在 home 下新建文件:test
            修改 home 权限;O=0
        
        3、扩展:
            linux的特点:多用户:在同一时刻可以有多个用户同时使用Unix操作系统而且他们互不干扰
            管理员权限 visudo     98行 sudo
            sudo rpm -e vim-minimal --nodeps  普通用户 强制卸载
    
    

    六、进程相关命令
        ps     #查看进程
          a 与终端相关的进程
          x 与终端无关的进程
          u 显示运行进程的用户
          实例:ps -aux | grep yum
        kill 命令:kill
           选项:-9  强行终止进程
           格式:kill [option] pid
           实例:kill -9 pid
    

    七、lamp 环境安装
        1、查看mysql是否 安装
            rpm -qa | grep mysql
                -a   所有
                 -q  使用询问模式,当遇到任何问题时,rpm指令会先询问用户。
        2、mysql 需要安装几个包:
            服务端、客户端、php-mysql 扩展包
        
        3、镜像文件挂载到指定目录(相当于把光盘放到光驱里面可读,可执行)
            mount /dev/cdrom /media/mnt 【前者是光盘,后者是挂载的地方】
                error:mount: you must specify the filesystem type【你的系统不能识别这个光盘里面的数据格式】
                检查右下角光盘是否启动?

            umount  /media/mnt  【卸载挂载】

            进入挂载的目录,查看包文件
                cd /media/mnt/Packages
                ls mysql*   #查看所有 mysql包 两个包(客户端和服务器包)
                ls php*     #查看php-mysql 扩展包

            rpm -ivh mysql-5.1.66-2.el6_3.i686.rpm 【安装 mysql客户端】

            rpm -ivh mysql-server-5.1.66-2.el6_3.i686.rpm 【安装 mysql服务端 rpm包 出现依赖关系,引入yum安装】
                i  显示套件的相关信息
                v  显示指令执行过程
                h  套件安装时列出标记

        4、yum 安装mysql(本地安装yum源)
            cp -r /etc/yum.repos.d/ /etc/yum.repos.d_bak #备份文件
            rm -rf /etc/yum.repos.d/*    (原来的都不要了)
            vim /etc/yum.repos.d/dvd.repo #yum源 指向本地目录

[local_server]
name=This is a local repo
baseurl=file:///media/cdrom
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


            yum makecache                 #生成yum 缓存
            yum install mysql-server      #安装mysql-server

            rpm -qa | grep mysql          #查看安装好的apm包
            yum -y install php-mysql      #安装php-mysql
                -y 参数指明默认同意

            service mysqld start|stop|status #mysql安装

    
    八、svn安装
        1、cat /etc/yum/.repos.d/dvd.repo #查看yum安装源挂载到哪里了
        2、cd /media/mnt/Packages/        #进入挂载的安装包目录
        3、ls sub*              #查看svn的安装包
        4、yum install sub===             #svn安装
        5、rpm -qa| grep sub              #查看是否安装成功
        6、svnadmin create /usr/local/svn/blog #创建版本库
        7、svnserve -dr /usr/local/svn/      #启动svn服务
        8、vim /usr/local/svn/blog/conf/svnerve.conf #配置svn权限
            要打开的地方:
                行号:12、13、20、32
        9、develop = dev1,dev2 #新建开发者和密码
        10、Linux 自动更新
            新建文件:
                vim /usr/local/svn/demo/hooks/post-commit

            增加可执行权限:
                chmod -R 777 post-commit

            添加如下文字:
                #!/bin/sh
                export LANG=en_US.UTF-8
                /usr/bin/svn update /var/www/html/demo  --username dev1 --password 123456

        svn 命令
            1、将文件checkout到本地目录
                svn checkout path(path是服务器上的目录)
                svn checkout svn://192.168.1.1/pro/domain
                简写:svn co
            
            2、往版本库中添加新的文件
                svn add file
                例如:svn add test.php(添加test.php)
                svn add *.php(添加当前目录下所有的php文件)
            
            3、将版本库中添加新的文件
                svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)
                例如:svn commit -m "add test file for my test" test.php
                简写:svn ci
            
            4、更新到某个版本
                svn update -r m path
                例如:
                     svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
                     svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
                     svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
                简写:svn up

        


    五、shell脚本
        一、Shell 概述
            1、 ASCII 字码表
                是一个命令解释器。
                    用户 =》 shell => 内核 调用硬件来执行这个命令
                shell还是一个功能强大的编程语言。
                    shell是解释执行的脚本语言,在shell中可以直接调用Linux命令。


                echo $SHELL  #查看当前的shell类型
        二、脚本执行方式:
            1、echo 输出内容到屏幕上
                #! /bin/bash    #不是注释,也不是可有可无的,它是一个shell脚本的标准输出,必须要有
            
            2、脚本执行:
                赋予执行权限,直接运行
                    chmod 755 hello.sh
                    ./hello.sh

                通过Bash调用执行脚本
                    bash hello.sh

            3、Bash的基本功能:
                命令别名与快捷键
                    命令别名 == 人的小名
                    alias  #查看所有别名

                历史命令
        三、常用快捷键
            ctrl + c  强制终止当前命令
            ctrl + l  清屏
            ctrl + r  在历史命令中搜索
            ctrl + a  光标移动到命令行首
            ctrl + e  光标移动到命令行尾
            ctrl + u  从光标所在位置删除到行首
            ctrl + z  把命令放入后台执行

    八、PowerDesign使用
        概念建模:文件-》建立新模型 -》Conceptual Data Model (概念数据模型)
        创建物理模型:工具 -> Generate Physical Data Model (生成逻辑数据模型)
        数据库生成:数据库-> Generate Databases(生成数据库)
        
    九、计划任务
        crontab -e                #定时任务执行
        crontab -l            #定时任务列表
        crontab -e -u tan     #执行用户
        tail -f /var/log/cron #动态查看任务执行情况

        whereis php-cgi       #php执行
        /usr/bin/php-cgi -q /var/www/html/insert.php >>/root/time.txt


    十、虚拟机多域名配置
        1、vim /etc/hosts
            192.168.101.129 domain.com
        2、vim /etc/httpd/conf/httpd.conf  
            最低端 PgDn  加入代码:

            NameVirtualHost 192.168.1.115:80
            <VirtualHost 192.168.1.115:80>
                DocumentRoot /usr/local/apache2/htdocs/project
                ServerName domain.com
            </VirtualHost>
            <Directory "/usr/local/apache2/htdocs/project">
                Options Indexes FollowSymLinks
                AllowOverride all
                Order Deny,Allow
                Deny from all
                Allow from all
            < /Directory>


    十一、挂载理解:
        1.umount, 老是提示:device is busy, 服务又不能停止的。
            可以用"umount -fl"解决!
=======================

        

    



========================

其它:
    命令查看帮助:less --help | man 命令
    关机:halt
    重启系统:reboot
    查看ip地址:ifconfig
    查看上次命令是否执行成功:echo $?

    服务相关:
        图形化:ntsysv 命令
        位置:Linux系统所有的预设服务可以查看/etc/init.d/目录得到:
        命令使用:
            service 服务名称  start|stop|restart|status
            iptables  #防火墙
            network   #网络服务
            crond     #计划任务

    链接ssh
        service iptables start|stop|restart|status  #关闭防火墙
        httpd #apatch
        netstat -anptu | grep ssh #

    
    快捷键:
        Ctrl+P 并回车执行。  #重复执行上一条命令:
        Ctrl + N 并回车执行  #重复下一条命令:

        Ctrl +fn+ Insert       #复制所选
        Shift + Insert      #粘贴
        Alt + Insert           #粘帖所选
        

    
    查找安装的包位置: rpm -ql 包名
        实例:rpm -ql mysql
    
    几个常用命令
        rpm -qa | grep mysql #查看rpm包是否安装
        ps -aux | grep mysql #查看进程
        whereis mysql         #查看软件安装路径
        ls http*             #该目录下的列表

    文件目录记录:
        /etc/httpd/conf/httpd.conf   #apatch 配置文件


    vi 和 vim 的区别:
        vi和vim都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。
        vim的这些优势主要体现在以下几个方面:
            1、多级撤消我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。
            2、易用性vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。
            3、语法加亮vim可以用不同的颜色来加亮你的代码。
            4、可视化操作就是说vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。
            5、对vi的完全兼容某些情况下,你可以把vim当成vi来使用。

    今天配置lamp环境遇到php代码不解析,在浏览器中显示php代码,花了好长时间终于解决问题:
        打开/etc/httpd/conf/httpd.conf
        找到AddType application/x-gzip .gz .tgz
        在下一行加入AddType application/x-httpd-php .php
        注意AddType application/x-httpd-php .php不要拼写错了。



   

原文地址:https://www.cnblogs.com/dwj97/p/6437810.html