• 总结第一天 礼拜五


    export ,sed,文件编辑器,grep,bash入门

    pattern  模式

    print    打印

    append 追加

     所有独立服务程序的启动脚本都放在/etc/init.d/ 目录里

    /etc/rc.d/rc0.d/
        ...
     /etc/rc.d/rc6.d/        这六个目录对应6个运行级别,放各个级别要运行哪些服务
            
        S                       S开头代表开机自动启动
        K                       K开头代表开机不自动启动
        数字                    代表顺序

    控制开机是否启动服务

            手工修改/etc/rc.d/rc5.d/里的脚本名称,把S改成K就不会开机启动
            
            ntsysv                                  文本图形服务管理
                
                --level 35                          代表控制运行级别3和5的服务
      用方向键选择用空格键选中是否开机启动,完成tab到ok即可

            chkconfig                               

                --list                              列出服务在各个运行级别是否启动
                    
                    chkconfig --list | grep nfs     查看nfs服务状态

                on                                  开启服务

                    chkconfig --level 35 nfs on     选择运行级别3和5 nfs服务开机自动启动

                off                                 关闭服务

                    chkconfig --level 35 nfs off    选择运行级别3和5 nfs服务开机自动不启动

                --add                               添加服务
                    
                    chkconfig --add nfs             把nfs服务添加到chkconfig管理

                --del                               删除服务
                    
                    chkconfig --del nfs             把nfs服务chkconfig管理删除
                
                要成功添加一个服务,需要做的:
                    
                    把服务的脚本放到/etc/rc.d/init.d

                    服务的启动脚本必须有两行的注释内容
                        
                        #chkconfig: - 85 15
                            -   代表所有级别默认不自动启动,如果是35代表运行级别3和5自动
                            85  代表如果服务开机启动,那么启动的顺序就是85
                            15  代表关机的时候,服务关闭的顺序

                        #description: nfs       服务的描述,可以随便写

                    给予脚本运行权限
                        
                        chmod 755 /etc/rc.d/init.d/nfs

                        不给权限重启服务会出现: 未被识别的服务

    --------------------------------------------------------------------------------

        服务介绍
            
            acpid                   高级电源管理
            autofs                  自动挂载移动设备
            kudzu                   检查硬件改动
            crond                   计划任务,必开
            netfs                   nfs依赖服务
            portmap                 nfs依赖服务
            rpcgssd                 nfs依赖服务
            rpcidmapd               nfs依赖服务    
            gpm                     鼠标支持
            haldaemon               u-dev相关,必须打开
            iptables                软件防火墙,建议打开
            messagebus              进程间通讯
            network                 网络服务
            syslogd                 日志

      

    时间任务
        
        常用的有三个:at、crontab、anacron
        
        对应的服务: atd、crond、anacron

     at
            
            如果设定的时间点过了,那么任务就失效,不会再执行,任务只是一次性,每次都要自动去建立

            /etc/init.d/atd start           启动atd服务

            at 10:32 011311                 定义在2011年1月13日的上午10点32分执行
            at> echo "hello" > /dev/pts/2   
            at>                             按ctrl+d结束

            at -l                           查看还没有运行的at任务,相当于atq


            at -c 5                         查看第五个at任务内容

            at -d 5                         删除每五个at任务,相当于atrm

            at -f test.sh 10:35 011311      时间一到运行脚本

            at -f test.sh now +1 minutes    以当前时间点往后推移1分钟执行test.sh脚本

            at -f test.sh now +1 hours      以当前时间点往后推移1小时执行test.sh脚本

            at -f test.sh now +1 days       以当前时间点往后推移1天执行test.sh脚本

            at -f test.sh now +1 weeks      以当前时间点往后推移1星期执行test.sh脚本
            
            at -f test.sh now +1 months     以当前时间点往后推移1月执行test.sh脚本
            
            at -f test.sh now +1 years      以当前时间点往后推移1年执行test.sh脚本

            /etc/at.deny                    里面记录拒绝执行at服务的普通用户名,一行写一个,如果at.allow不存在的话才生效

            /etc/at.allow                   里面记录允许执行at服务的普通用户名,一行写一个,此文件存在就不考虑at.deny文件


    --------------------------------------------------------------------------------

        crontab

            周期性的时间计划任务,时间过了也不执行,到下一个周期再执行

            /etc/init.d/crond start         开启crond服务

            vim /etc/crontab                crontab配置文件
                
                01 * * * * root run-parts /etc/cron.hourly      
                02 4 * * * root run-parts /etc/cron.daily
                22 4 * * 0 root run-parts /etc/cron.weekly
                42 4 1 * * root run-parts /etc/cron.monthly

                第一字段:分钟,取值范围0到59
                第二字段:小时,取值范围0到24
                第三字段:日,取值范围具体看月份
                第四字段:月,取值范围1到12
                第五字段:星期,取值范围0到7, 0和7都代表星期天
                第六字段:执行任务的身份
                第七字段:要执行的命令,多条命令用分号隔开,用括号括起来;
                         run-parts定义后面是一个目录,后面必须写目录路径,代表运行此目录里的所有脚本
                
                时间格式
                    
                    *   代表每分钟,每小时,每天,每月,每周
                    ,   逗号代表分隔时间
                    -   代表时间段
                    /n  代表每隔n个单位

                例:
                    每个小时的前30分钟执行任务
                        
                        1-30    *   *   *   *

                    每个小时的第29,58分钟执行

                        29,58   *   *   *   *

                    每隔2分钟执行

                        */2     *   *   *   *

                    每个月的15号每三个小时,每两分钟,执行任务
                        
                        */2     */3     15  *   *

                    每个月的15号每三个小时,每两分钟,执行任务或者星期七每三个小时,每两分钟执行任务
                        
                        */2     */3     15  *   7

                    练习:
                        
                        每天的1,3,7,8,13,21点的05分执行
                        每月的5号到20号的4点到13点的15分执行
                        每个星期三的每两小时
                        每年的5到8月的星期三和星期天的4点01分执行
                
                例:
                    vim /etc/crontab
                        
                        * * * * * root echo 'hello' > /dev/pts/2

                    保存退出,不需要重启服务,保证服务是启动状态,每分钟我们第二个终端就会收到hello

            
            crontab -e                      设定自己的时间任务
                
                * 21 * * * init 0       每天21点关机

            
            crontab -l                      查看自己的时间任务

            crontab -l -u root              查看root用户的时间任务

            crontab -e -u root              编辑root用户的时间任务

            crontab -r                      删除当前用户所有时间任务

            crontab -ir                      删除前要求确认

        
            /etc/cron.allow                 允许使用crond的普通用户名,有此文件不用考虑cron.deny

            /etc/cron.deny                  拒绝使用crond的普通用户名


    --------------------------------------------------------------------------------
        
        anacron
            
            与crond服务配合使用,保证crond服务在一些特殊的情况而没有运行的任务推后执行

            /etc/init.d/anacron start       开启服务

            一般开启此服务就行了,保证crond服务没有按时运行的任务去执行



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

    四、nfs服务器搭建与autofs使用
        
        涉及的软件包                    nfs-utils

        system-config-nfs               图形界面配置nfs服务器

        服务依赖的软件包                portmap
            
            /etc/init.d/portmap start      

            /etc/init.d/nfs start

        vim /etc/exports                服务配置文件
            
            /share/test     *(ro)       把/share/test目录共享给所有人,权限为只读
                
                第一列:代表要共享目录的路径
                第二列:*代表共享给所有人,可以改成某个IP或某个网段
                第三列:共享的参数,共享的权限等
                    
                    ro                  只读
                    rw                  可读可写
                    sync                同步
                    async               异步
                    root_squash         把root用户权限降级,默认把root映射成nfsnobody的普通用户
                    no_root_squash      不降root用户的权限


        showmount -e 2.2.2.192          查看2.2.2.192服务共享的目录

        mount -t nfs 2.2.2.192:/share/test /mnt     挂载到本地访问

        /etc/init.d/nfs reload          如果正在连接中的用户不会断开,再连接上来用新配置

        /etc/init.d/nfs restart         如果有正在连接的用户会断开


        开机自动挂载
            
            方法一、修改/etc/fstab
                
                2.2.2.192:/share  /mnt nfs defaults 0 0

            方法二、写到/etc/rc.d/rc.local
                
                mount -t nfs 2.2.2.192:/share /mnt

            方法三、写到环境变量文件(/etc/profile, ~/.bash_profile)

            方法四、使用autofs自动挂载,以上三种可以实现,但是不推荐,如果网络不正常会影响正常系统启动(了解)
                
                /etc/init.d/autofs start        启动autofs服务

                vim /etc/auto.master            主配置文件

                    /nfs    /etc/auto.nfs --timeout=30      表示/nfs目录的自动挂载情况是由/etc/auto.nfs这个文件来配置的,30秒后自动umount

                mkdir /nfs                      因为/nfs目录不存在,所以创建

                vim /etc/sysconfig/autofs         默认autofs设置
                    
                    TIMEOUT=300                 默认超时时间

                vim /etc/auto.nfs
                    
                    share    -   2.2.2.192:/share       自动把2.2.2.192共享的/share目录挂载到/nfs/share下

                    share    -rw,no_root_squash  2.2.2.192:/share    可以设置挂载选项

                    iso      -   2.2.2.192:/iso -


                /etc/init.d/autofs restart      重启服务
                
                ls /nfs                         没有任何反应

                cd /nfs/share                   直接进入挂载的目录
     at
            
            如果设定的时间点过了,那么任务就失效,不会再执行,任务只是一次性,每次都要自动去建立

            /etc/init.d/atd start           启动atd服务

            at 10:32 011311                 定义在2011年1月13日的上午10点32分执行
            at> echo "hello" > /dev/pts/2   
            at>                             按ctrl+d结束

            at -l                           查看还没有运行的at任务,相当于atq


            at -c 5                         查看第五个at任务内容

            at -d 5                         删除每五个at任务,相当于atrm

            at -f test.sh 10:35 011311      时间一到运行脚本

            at -f test.sh now +1 minutes    以当前时间点往后推移1分钟执行test.sh脚本

            at -f test.sh now +1 hours      以当前时间点往后推移1小时执行test.sh脚本

            at -f test.sh now +1 days       以当前时间点往后推移1天执行test.sh脚本

            at -f test.sh now +1 weeks      以当前时间点往后推移1星期执行test.sh脚本
            
            at -f test.sh now +1 months     以当前时间点往后推移1月执行test.sh脚本
            
            at -f test.sh now +1 years      以当前时间点往后推移1年执行test.sh脚本

            /etc/at.deny                    里面记录拒绝执行at服务的普通用户名,一行写一个,如果at.allow不存在的话才生效

            /etc/at.allow                   里面记录允许执行at服务的普通用户名,一行写一个,此文件存在就不考虑at.deny文件


    --------------------------------------------------------------------------------

        crontab

            周期性的时间计划任务,时间过了也不执行,到下一个周期再执行

            /etc/init.d/crond start         开启crond服务

            vim /etc/crontab                crontab配置文件
                
                01 * * * * root run-parts /etc/cron.hourly      
                02 4 * * * root run-parts /etc/cron.daily
                22 4 * * 0 root run-parts /etc/cron.weekly
                42 4 1 * * root run-parts /etc/cron.monthly

                第一字段:分钟,取值范围0到59
                第二字段:小时,取值范围0到24
                第三字段:日,取值范围具体看月份
                第四字段:月,取值范围1到12
                第五字段:星期,取值范围0到7, 0和7都代表星期天
                第六字段:执行任务的身份
                第七字段:要执行的命令,多条命令用分号隔开,用括号括起来;
                         run-parts定义后面是一个目录,后面必须写目录路径,代表运行此目录里的所有脚本
                
                时间格式
                    
                    *   代表每分钟,每小时,每天,每月,每周
                    ,   逗号代表分隔时间
                    -   代表时间段
                    /n  代表每隔n个单位

                例:
                    每个小时的前30分钟执行任务
                        
                        1-30    *   *   *   *

                    每个小时的第29,58分钟执行

                        29,58   *   *   *   *

                    每隔2分钟执行

                        */2     *   *   *   *

                    每个月的15号每三个小时,每两分钟,执行任务
                        
                        */2     */3     15  *   *

                    每个月的15号每三个小时,每两分钟,执行任务或者星期七每三个小时,每两分钟执行任务
                        
                        */2     */3     15  *   7

                    练习:
                        
                        每天的1,3,7,8,13,21点的05分执行
                        每月的5号到20号的4点到13点的15分执行
                        每个星期三的每两小时
                        每年的5到8月的星期三和星期天的4点01分执行
                
                例:
                    vim /etc/crontab
                        
                        * * * * * root echo 'hello' > /dev/pts/2

                    保存退出,不需要重启服务,保证服务是启动状态,每分钟我们第二个终端就会收到hello

            
            crontab -e                      设定自己的时间任务
                
                * 21 * * * init 0       每天21点关机

            
            crontab -l                      查看自己的时间任务

            crontab -l -u root              查看root用户的时间任务

            crontab -e -u root              编辑root用户的时间任务

            crontab -r                      删除当前用户所有时间任务

            crontab -ir                      删除前要求确认

        
            /etc/cron.allow                 允许使用crond的普通用户名,有此文件不用考虑cron.deny

            /etc/cron.deny                  拒绝使用crond的普通用户名


    --------------------------------------------------------------------------------
        
        anacron
            
            与crond服务配合使用,保证crond服务在一些特殊的情况而没有运行的任务推后执行

            /etc/init.d/anacron start       开启服务

            一般开启此服务就行了,保证crond服务没有按时运行的任务去执行



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

    四、nfs服务器搭建与autofs使用
        
        涉及的软件包                    nfs-utils

        system-config-nfs               图形界面配置nfs服务器

        服务依赖的软件包                portmap
            
            /etc/init.d/portmap start      

            /etc/init.d/nfs start

        vim /etc/exports                服务配置文件
            
            /share/test     *(ro)       把/share/test目录共享给所有人,权限为只读
                
                第一列:代表要共享目录的路径
                第二列:*代表共享给所有人,可以改成某个IP或某个网段
                第三列:共享的参数,共享的权限等
                    
                    ro                  只读
                    rw                  可读可写
                    sync                同步
                    async               异步
                    root_squash         把root用户权限降级,默认把root映射成nfsnobody的普通用户
                    no_root_squash      不降root用户的权限


        showmount -e 2.2.2.192          查看2.2.2.192服务共享的目录

        mount -t nfs 2.2.2.192:/share/test /mnt     挂载到本地访问

        /etc/init.d/nfs reload          如果正在连接中的用户不会断开,再连接上来用新配置

        /etc/init.d/nfs restart         如果有正在连接的用户会断开


        开机自动挂载
            
            方法一、修改/etc/fstab
                
                2.2.2.192:/share  /mnt nfs defaults 0 0

            方法二、写到/etc/rc.d/rc.local
                
                mount -t nfs 2.2.2.192:/share /mnt

            方法三、写到环境变量文件(/etc/profile, ~/.bash_profile)

            方法四、使用autofs自动挂载,以上三种可以实现,但是不推荐,如果网络不正常会影响正常系统启动(了解)
                
                /etc/init.d/autofs start        启动autofs服务

                vim /etc/auto.master            主配置文件

                    /nfs    /etc/auto.nfs --timeout=30      表示/nfs目录的自动挂载情况是由/etc/auto.nfs这个文件来配置的,30秒后自动umount

                mkdir /nfs                      因为/nfs目录不存在,所以创建

                vim /etc/sysconfig/autofs         默认autofs设置
                    
                    TIMEOUT=300                 默认超时时间

                vim /etc/auto.nfs
                    
                    share    -   2.2.2.192:/share       自动把2.2.2.192共享的/share目录挂载到/nfs/share下

                    share    -rw,no_root_squash  2.2.2.192:/share    可以设置挂载选项

                    iso      -   2.2.2.192:/iso -


                /etc/init.d/autofs restart      重启服务
                
                ls /nfs                         没有任何反应

                cd /nfs/share                   直接进入挂载的目录


    超级守护程序管理许多服务的守护程序,用它管理可以提高服务的安全性

        /etc/xinetd.conf                        配置文件
            
            includedir /etc/xinetd.d             更多的设置在/etc/xinetd.d/目录里


        相关配置文件
        /etc/xinetd.d/tftp                          管理的服务配置文件
            
            service tftp                        管理的服务名称
                
                disable = yes                   设置服务是否关闭,yes为关闭,no为启动服务
                socket_type = dgram             设置联机机制,TCP用stream,UDP用dgram
                protocol = udp                  设置联机状态使用的协议
                wait = yes                      设置服务是否支持多线程,no为支持,可以同时处理用户的连接
                user = root                     设置服务运行的身份,也可以支持UID
                group = 502                     设置服务运行组身份,值为GID
                instances = 30                  设置服务同时联机数最多为30台
                nice = -15                      设置服务运行的优先级,取值范围-19到19,数据越小,运行级别越高
                server = /usr/sbin/in.tftpd     设置服务启动程序
                server_args = -s /tftpboot -c   设置服务启动程序的参数, -c代表可以创建文件
                log_on_success += PID           设置成功登录服务记录的信息,+代表之前加入当前设置的参数,-+代表在原有基础舍弃设置的参数
                        PID                     记录PID
                        HOST                    记录IP地址
                        USERID                  记录登录用户
                        EXIT                    记录离开信息
                        DURATION                记录登录时间
                log_on_failure = HOST           设置登录失败,记录哪些信息
                        HOST                    记录IP地址
                        USERID                  记录用户名
                        ATTEMPT                 记录失败原因
                        RECORD                  记录远程主机信息
                port = 65                       设置服务的端口
                redirect = 2.2.2.192 65         设置转发到2.2.2.192,转发到另一服务器
                bind = 2.2.2.192                绑定IP,在有双网卡时绑定哪网卡的IP通信
                only_from = 2.2.2.191           限制只能2.2.2.191能访问此服务,也可以设置网段
                no_access = 2.2.2.{32,56}       限制2.2.2.32和2.2.2.56不许登录此服务
                access_times = 1:00-9:00 20:00-23:00    每天在这两个时段此服务才开放
                umask = 022                     创建文件默认权限的掩码
                cpu = 20 30                     同一秒内最大联机数为20,超过20该服务会暂时停止30秒


            
        /etc/init.d/xinetd restart              重启超级守护程序,这样不需要独立重启管理的服务

    变量 : 以一组文字或符号来替换一些比较复杂或者容易变动的数据
        
        变量的用途
            
            简单的用途就是为了方便搜索
            常用于编程里,对经常使用的值使用变量,方便引用

        变量的分类
            
            自定义变量                  不影响子进程

            环境变量                    影响子进程

        自定义变量转环境变量
            
            export  自定义变量名        

            A=100
            export A  转为环境变量

        
        执行脚本的方法:
             chmod +x 1hello.sh  给可执行权限

        四种执行方法
             ./1hello.sh        fork一个子进程来执行这个脚本
             bash 1hello.sh     同上
             . 1hello.sh        在父进程的环境中执行脚本
             source 1hello.sh   同上



        变量的定义
            
            定义规则
                
                区分大小写,同名称但大小写不同的变量名是不同的变量
                定义变量时两边不能有空格,有空格的字符串要用引号引起来
                单引号和双引号的区别,单引号不会转义所有特殊字符
                变量名可以是数字或字符,但不能以数字开头

            直接赋值定义变量
                
                var=200                 定义var变量,变量值为200
            
            使用declare/typeset定义变量
                
                declare -a arr          定义arr为数组
                declare -i  sum=350+20  定义sum为整数数字
                declare -x var          定义var为环境变量
                declare -r var          定义var为只读变量,不能unset

        释放变量
            
            unset var                   释放var变量

        
        变量赋值可以有多个
            
            var=a                       定义var变量,值为a
            var="$var"c                 给var变量的值后面加上c
            var=${var}d                 给var变量的值后面继续加上d

        特殊的变量定义方式
            
            var=`ls -l`                 把ls -l的标准输出结果赋给var变量
            var=$(ls -l)                和上面效果一样


        提示符变量设置
            
            man bash                    查找PS1关健词

            d                          代表日期,格式为星期 月 日
            H                          完整的主机名称
            h                          仅取主机名称的第一个名字
                                      显示时间,为24小时格式,如HH:MM:SS
            T                          显示时间,12小时格式
            A                          显示时间,24小时格式,HH:MM
            u                          当前登录用户名
            v                          bash的版本信息
            w                          工作目录的绝对路径
            W                          显示当前工作目录名
            #                          命令计数器

    --------------------------------------------------------------------------------

        交互式赋值
            
            read var                    等待用户给var变量赋值

            read -p "input your name:" var  提示信息等待用户给var变量赋值

            read -p "input your name:" -t 10 var  提示信息等待用户给var变量赋值,10秒不输入的话直接跳过

            read -s -p "input your password:" passwd    提示信息等待用户给passwd变量赋值并且隐藏显示

            read -n 6 -p "input your name: " name   提示用户输入用户名给name,并且只接收6个字符


    --------------------------------------------------------------------------------

        访问变量
            
            $var                        引用var变量的值

            ${var}                      引用var变量的值

            ${var%a*}                   引用var变量的值并且截取a左边的字符串显示,如果字符串有多个a,则按从左向右最后一个a截取

            ${var%%a*}                  引用var变量的值并且截取a左边的字符串显示,如果字符串有多个a,则按从左向右第一个a截取

            ${var#*a}                   引用var变量的值并且截取a右边的字符串显示,如果字符串有多个a,则按从左向右第一个a截取

            ${var##*a}                  引用var变量的值并且截取a右边的字符串显示,如果字符串有多个a,则按从左向右最后一个a截取

            ${var:3}                    引用var变量的值并且从第3个字符开始截取

            ${var:3:6}                  引用var变量的值并且从第3个字符开始截取,截取6个字符显示

            ${#var}                     返回var变量值的长度
        
            ${var/a/b}                  替换变量值的字符串,这里是把var变量值里的a换成b,如果有多个a也只能换一次

            ${var//a/b}                 替换变量值的字符串,这里把var变量值里的a全换成b


        
    --------------------------------------------------------------------------------

        特殊变量
            
            echo $$                     返回程序的PID

            echo $0                     脚本名

            echo $1                     指第一个参数
            echo $2                     指第二个参数
            echo $3                     指第三个参数
            ....
            echo $n                     指第n个参数

            echo $*                     代表所有参数
            echo $@                     代表所有参数
            echo $#                     代表参数的个数

            echo $?                     查看上一条命令执行结果,执行成功返回0,执行失败返回非0


    --------------------------------------------------------------------------------
        双向重定向
            
            tee                         把结果传给文件同时又传给屏幕
    less | tee  tee.txt     屏幕会显示结果,tee.txt文件也会产生

            cat > cat.txt               编辑cat.txt文件
                输入内容
                ctrl+d      结束

            cat > cat.txt << EOF        编辑cat.txt以EOF为结束符
            >hello
            >world
            >EOF            结束符,不会写进cat.txt文件            


    killall    

        使用进程名杀死进程
        [root@deng home]# killall -9 a.out
    服务管理

        通用的方法
        [root@deng home]# /etc/init.d/network
        用法:/etc/init.d/network {start|stop|status|restart|reload|force-reload}

        [root@deng home]# /etc/init.d/network start     启动服务
        [root@deng home]# /etc/init.d/network stop      停止服务
        [root@deng home]# /etc/init.d/network status    查看服务的状态
        [root@deng home]# /etc/init.d/network restart   重启服务
        [root@deng home]# /etc/init.d/network reload    重新加载
        [root@deng home]# /etc/init.d/network force-reload 强制重新加载

        service redhat centos fedora通用
        [root@deng home]# server  network start     启动服务
        [root@deng home]# server  network stop      停止服务
        [root@deng home]# server  network status    查看服务的状态
        [root@deng home]# server  network restart   重启服务
        [root@deng home]# server  network reload    重新加载
        [root@deng home]# server  network force-reload 强制重新加载

    ntsysv

        图形界面画管理服务
        [root@deng home]# ntsysv  


     chkconfig

        用法:   chkconfig [--list] [--type <type>] [name]
        chkconfig --add <name>
        chkconfig --del <name>
        chkconfig --override <name>
        chkconfig [--level <levels>] [--type <type>] <name> <on|off|reset|resetpriorities>


        查看服务的启动情况
        [root@deng /]# chkconfig  --list
        NetworkManager  0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭
        abrt-ccpp       0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:启用  6:关闭
        abrtd           0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:启用  6:关闭
        acpid           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
        atd             0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭


        查询指定的服务的启动情况
        [root@deng /]# chkconfig  --list sshd
        sshd            0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭

        
        从服务管理中移除指定的服务
        [root@deng /]# chkconfig --del sshd

        将指定的服务添加到chkconfig管理中
        [root@deng /]# chkconfig --add sshd

        
        [root@deng /]# chkconfig  --list sshd
        sshd            0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
        [root@deng /]# chkconfig --level 2345 sshd on
        [root@deng /]# chkconfig  --list sshd
        sshd            0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
        [root@deng /]# chkconfig --level 2345 sshd off
        [root@deng /]# chkconfig  --list sshd
        sshd            0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭
        [root@deng /]#


        --level使用默认值 2345
        [root@deng rc5.d]# chkconfig nfs off
        [root@deng rc5.d]# chkconfig --list nfs
        nfs             0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭
        [root@deng rc5.d]# chkconfig nfs on
        [root@deng rc5.d]# chkconfig --list nfs
        nfs             0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
        [root@deng rc5.d]#

     at

        启动对应服务
        [root@deng rc5.d]# /etc/init.d/atd restart
        停止 atd:                                                 [确定]
        正在启动 atd:                                             [确定]

        在一分钟之后执行指定的脚本
        [root@deng home]# at -f a.sh now +1minutes




     crond

        [root@deng rc5.d]# /etc/init.d/crond restart
        停止 crond:                                               [确定]
        正在启动 crond:                                           [确定]
        [root@deng rc5.d]#


    脚本

    #!/bin/bash

    #  #!一起使用指定解析器的路径 /bin/bash
    # 表示注释

    #输出字符串到指定的终端
    echo "hello uplooking"

    #exit 0f

    #!/bin/bash

    #变量赋值的时候  赋值号两边不能有空格
    var=88

    #变量的引用
    #第一种: $var
    #第二种: ${var}

    echo "var = $var"
    echo "var = ${var}"

    #如果变量没有赋值 那么就为空
    echo "var1 = $var1"

    exit 0

    #!/bin/bash

    #shell中的变量不需要先定义
    #shell中的变量都是弱类型
    #shell中的变量期间都可以被重新赋值

    var=112233
    echo "var = $var"

    var="hello uplooking"
    echo "var = $var"

    var=3.1415926
    echo "var = $var"

    var='M'
    echo "var = $var"

    exit 0

    #!/bin/bash

    var=33
    echo "var = $var"

    #会将varhello当作一个变量处理
    #var=$varhello
    #如果是追加赋值 后面的字符串必须使用双引号或者单引号
    #var=$var"hello"
    #var=$var'hello'
    var=${var}hello
    echo "var = $var"

    exit 0

    #!/bin/bash

    a=3
    b=4

    echo "a + b = $((a + b))"

    exit 0

    #!/bin/bash

    var=88
    echo "var = $var"

    #取消变量赋值
    unset var
    echo "var = $var"

    exit 0

    #!/bin/bash


    #$() 取命令的输出
    #``  取命令的输出   

    #ls的输出的结果  赋值给var
    var=$(ls)
    echo "var = $var"

    #换行
    echo  "========================"
    #取命令的输出
    var=`ls`
    echo "var = $var"

    exit 0

    #!/bin/bash

    #从标准输入读取一行 赋值给var
    read var
    echo "var = $var"

    #-p 提示信息
    read -p "please input a number:  " n
    echo "n = $n"

    echo "================================"
    read -p "please input username and passwd: " username passwd
    echo "username = $username  passwd = $passwd"

    exit 0

    进程的概念

    程序存放在硬盘上是静态,把它复制到内存上并在cpu上运行就叫进程。

    一个运行的系统上有很多进程并且为每个进程分配了进程号pid

    一号进程是所有进程的祖先.(fork, clone)

            调用fork()和clone()函数的是父进程,被创建的进程是子进程

            每个进程都是由父进程启动的,并且可以启动另一个进程成为自己的子进程

        进程与程序的区别

            进程就是一个正在运行的程序的实例
        
            程序是一些保存在磁盘上的二进制代码和数据的集合

        查看进程
            
            pstree                          以树形的结构显示进程
                
            pstree -p                       显示进程号

            ps                              查看进程

                -a                          显示控制台的进程
                -u                          显示带用户名的控制台进程
                -l                          显示详细信息
                -x                          显示所有进程
                -p 3104                     只显示PID为3104的进程
                -C bash                     显示所有bash的进程
                -U root                     显示属于root的进程

                ps -ef / ps -aux            显示所有进程
                ps -ef | grep "bash"        只查看包含有bash关键字的进程信息

            ps -ef
                UID            运行进程的用户ID号
                PID            进程的ID
                PPID        进程的父进程ID
                C            CPU调度情况  
                STIME         进程启动的时间
                TTY         终端
                TIME        进程使用的CPU的时间
                CMD            启动进程的命令
        
            ps aux
                USER           运行进程的用户
                PID            进程的ID
                %CPU        进程CPU使用率
                %MEM        进程的内存使用率
                VSZ           进程占用虚拟内存的大小
                RSS            进程占用物理内存的大小
                TTY         终端
                STAT        进程的状态
                START          进程启动的时间
                TIME        进程使用CPU的时间
                COMMAND        启动进程的命令
        

                        
            pgrep                           过滤进程查看
                
                -l                          列出进程PID
                -u root                     列出root用户所有的进程

                -l vim                      匹配vim的所有进程和PID

            pgrep -l sshd

            jobs                            列出后台运行的程序

            top                             实时显示进程信息

                h or ?                      帮助
                q                           退出
                s                           设定两次更新之间的时候,以秒为单位
                space(空格)                 更新显示
                M                           根据内存大小对进程排序
                P                           根据CPU占用对进程排序
                u                           显示特定用户的进程
                k                           杀死进程
                r                           更改进程优先级

                top -b -n 1 > top.txt       保存为静态文件
                
                top头部显示的信息
                    
                    users                   几个用户正在登录

                    up                      前面是当前时间,后面为运行了多久

                    load average: 0.15,0.12, 0.04   这三个数字代表1分钟,5分钟,15分钟内CPU平均负载数,当负载值长期大于5以上的话就要注意可能是CPU负载过大

                这些信息也可以使用uptime得到

                
        进程状态
            
            S                               sleep,睡眠状态,有可能会被其它程序被唤醒
            R                               正在运行状态
            D                               不可中断的睡眠,一般要等待硬件的唤醒
            Z                               僵尸进程, 子进程已死, 父进程来不及处理/没有处理
            T                               进程暂停状态

        进程优先级
            
            nice -19 ./test.sh              设置程序运行的优先级,优先级越低,数值越高,中间数字取值范围-20到19

            renice -10 7347                 和nice一样,只是针对已经运行的程序

                
        进程控制
            
            kill                            信号发送工具
                
                kill -15 3214               友好的终止程序
                kill -SIGTERM               同上
                kill -9 3214                发信号给内核,直接干掉进程,进程本身收不到这个信号
                kill -SIGKILL 3214          同上
                kill -l                     打印信号名字列表
            
            killall                         和kill同功能,不同的是killall可以针对进程名

    对于发的内容,请大神指点。
  • 相关阅读:
    大航海计划
    副业刚需
    【转】iOS学习之适配iOS10
    【原】iOS学习之Masonry第三方约束
    【原】iOS学习之PINCache第三方缓存框架
    【原】iOS学习之苹果原生代码实现Autolayout和VFL语言
    【原】iOS学习之NSDate在项目中的一些类目扩展
    【原】iOS学习之tableView的常见BUG
    【转】iOS开发 -- Apple Pay
    【原】iOS学习之事件处理的原理
  • 原文地址:https://www.cnblogs.com/gongll/p/7347485.html
Copyright © 2020-2023  润新知