zoukankan      html  css  js  c++  java
  • 鸟哥的linux私房菜学习

    cat /etc/shells 系统拥有的shell
    cat /etc/passwd 记录用户使用的shell
    按两次 tab 键可显示所有可执行的指令
    alias 查看所有命令的别名
    alias lm='ls -al' 定义别名(常用的指令可以起个别名)
    在指令后面加 可以换行接着输入指令
    myname=victor 设置变量
    unset myname 取消变量
    export myname 让变量在其他子程序可用(设置成环境变量)
    PATH=$PATH:/home/dmtsai/bin 变量累加值
    PATH="$PATH"/home/dmtsai/bin 变量累加值(后面没有:符合)
    bash 进入子程序
    exit 退出子程序
    env 查看所有环境变量

    cat /etc/sysconfig/i18n 设置成 LANG="zh_CN.UTF-8"
    read -p "输入你的名字:" -t 3 yy 输入值到变量yy中
    declare -a 定义数组类型变量
    declare -i 定义整形类型变量
    declare -x 定义成环境类型变量
    declare -r 定义只读类型变量

    PS1='[u@h W]$ ' #用于设置提示符
    username=${username-root} #如果username没有值,就会给它赋值root
    username=${username:-root} #如果username没有值或者有""空字符串,都会给它赋值root

    type -a ls #查找命令的执行顺序
    vi /etc/motd #修改登录信息,用户每次登录都会显示
    /etc/profile #是系统整体设置,每个用户连接登录时都会读取
    ~/.bash_profile或~/.bash_login或~/.profile属于个人用户设置,用户自己连接登录时读取,这三个文件依次读取,读到一个就不会再读下一个了
    /etc/profile.d/*.sh #该目录下的所有sh文件都会被/etc/profile调用,/etc/sysconfig/i18n就是由/etc/profile.d/lang.sh调用的
    /etc/profile 刚保存数据后,要用户连接登录后才会读取,可以使用source /etc/profile 读取进shell
    /etc/man.config #规定了man的时候查找的路径
    ~/.bash_history #记录历史命令
    ~/.bash_logout #注销用户时可以执行一些操作

    login shell 会读取/etc/profile、~/.bash_profile或~/.bash_login或~/.profile,~/.bash_profile也会再读取~/.bashrc

    non-login shell 只会读取 ~/.bashrc

    正常的登录连接shell就是login shell,在X图形界面打开的终端和子程序就是non-login shell

    ll > 1.txt #将输出写入到文件
    ll > 1.txt #将输出追加到文件
    1>:以覆盖的方式将正确信息写入文件
    1>>:以追加的方式将正确信息写入文件
    2>:以覆盖的方式将错误信息写入文件
    2>>:以追加的方式将错误信息写入文件
    2>/dev/null 忽略错误信息
    ; 可以连续执行多个命令
    cmd1 && cmd2 #cmd1执行成功了才执行cmd2,否则不执行cmd2
    cmd2 || cmd2 #cmd1执行成功了就不执行cmd2,否则执行cmd2
    echo $PATH | cut -d ':' -f 5 #以:号分隔,取出第5段字符串
    cat p.txt | grep -v abc #列出不包含abc的行,-v反向选择,-n输出行号,-i忽略大小写,--color=auto 关键字显示出颜色
    cat /etc/passwd | sort #对内容排序
    last | tr [a-z] [A-Z] #将小写字母全部换成大写字母
    cat /etc/passwd | tr -d ':' #将冒号全面删除
    paste 连接两行
    expand 将tab键转成空格键
    split 切割文件

    第十四章、Linux账号管理与ACL权限设置
    /etc/passwd 记录用UID/GID
    -------------------------------------------------
    root:x:0:0:root:/root:/bin/bash
    用户名:密码:UID(系统管理员为0):GID:说明列:用户目录:使用的shell


    /etc/shadow 记录用户密码
    ----------------------------------
    root:$6$nRI4B3HqSLT0t2f/$xvbvWDNAhuR2HG7wCtwd9sLRSlHm9eD92nUo0bGDcJ0xEIAAqqj7Zu1n/s4BYmcpDkhilFHGAH2gnHzYLBm.l1:16124:0:99999:7:::

    用户名:密码:最近更改密码的日期:密码不可改动的天数:密码需要重新改动的天数:密码需要改动期限前的警告天数:密码过期后的账号宽限时间:账号失效日期:保留


    /etc/group 记录用户组信息
    ---------------------------------------
    root:x:0:root
    用户组名称:用户组密码:GID:包含的用户

    useradd vbird1 #创建用户
    passwd vbird1 #设置密码,后面没加账号就是修改自己的密码
    useradd -D #查看创建用户的默认参数
    cat /etc/default/useradd # 查看创建用户的参数文件
    cat /etc/login.defs #查看创建用户使用的配置文件
    passwd -S vbird1 #查看账户的密码策略
    chage -l vbird1 #查看账户的密码策略
    usermod -g root victor #将victor用户修改成root组,使用usermod就是间接修改passwd等文件
    userdel #删除用户
    finger #查阅用户信息
    id vbird1 #查看用户id信息
    cat /etc/gshadow # 用户组密码信息
    groupadd #添加用户组
    groupmod #修改用户组
    groupdel #删除用户组

    su #切换用户,没跟用户名代表切换到root
    su - #切换用户,加“-”号代表以login-shell方式登录,没加则是以non-login shell登录。以login-shell方式登录使用的环境变量就是切换后的用户的。
    su - -c "head -n 3 /etc/shadow" #以root账号执行一条命令
    sudo #切换身份执行命令
    /etc/sudoers #存储可以执行sudo的用户,默认只有root用户
    /etc/sudoers 文件格式:
    用户账号 允许来源的IP=(可切换的身份) 可执行的命令
    root ALL=(ALL) ALL
    %wheel ALL=(ALL) ALL #在最前面加 % ,代表接的是用户组

    也可以使用别名(一定要是大写):
    User_Alias ADMPW = pro1,pro2,pro3,mysuer1,mysuer2
    Cmnd_Alias ADMPWCOM = !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root
    ADMPW ALL=(root) ADMPWCOM
    一般使用visudo来编辑/etc/sudoers文件,它可以检查sudoers文件是否合法。

    PAM #Linux下的验证机制
    PAM的相关配置文件在pam.d目录下
    cat /etc/pam.d/system-auth
    cat /etc/pam.d/login
    cat /etc/pam.d/passwd
    cat /etc/security/limits/conf #限制用户的配置

    last #查看登录系统的记录
    w或者who #查看目前已登录系统的用户
    lastlog #查看每个账户的最近登录时间
    write vbird1 #向vbird1用户发送信息聊天
    wall "I will shutdown my linux server..." #向所有用户广播消息
    mail vbird1 -s "nice to meet you" #发邮件给用户
    mail #接收邮件

    pwck #检查账号配置信息是否正确

    第16章 例行性工作

    crontab #循环执行命令
    /etc/cron.allow #保存的账号可以执行crontab命令
    /etc/cron.deny #保存的账号不可以执行crontab命令,系统默认只保留这个文件。一个行一个账号
    crontab -u #只有root才能进行这个任务
    crontab -e #编辑crontab的工作内容(即是编辑/var/spool/cron目录对应的用户文件)
    crontab -l #查阅crontab的工作内容
    crontab -r #删除所有的工作内容,如果删除一条,用crontab -e编辑即可

    需要注意的地方:

    1.注意要执行的命令是否使用了绝对路径或者文件头中是否引入了路径如:PATH=/sbin:/bin:/usr/sbin:/usr/bin
       如果是用crontab -e编辑的,使用的就是用户下面的环境变量
       如果是用vi /etc/crontab编辑的,就要注意是否引入了路径
    2.待执行的脚步中如果有目录或者文件,注意要使用绝对路径,否则会找不到。如:date >> /home/tt.txt

    3.定时器是通过crond服务执行的,该服务每隔一分钟会去检查定时任务的配置文件。如果修改配置后需要马上生效需要重新下服务,或者等1分钟后会自动生效。

    crontab有两种执行方式:

      1.crontab -e #直接用当前用户执行任务

        格式如:*/1 * * * * /home/aa.sh         #不需要加用户名

      2.vi /etc/crontab #指定用户执行任务

        格式如:*/1 * * * * root /home/aa.sh  #需要指定用户名

    run-parts #该脚本可以按目录(/etc/cron.hourly为目录)下文件执行如:

    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   #每个月1号

    at #指定在某一时刻执行一次命令

    anacron #配合/etc/anacrontab的设置,可以唤醒停机期间系统未进行的crontab任务

    第17章  程序管理与SELinux初探

    ps -l #查看进程信息
    & #代表将该命令丢到后台中执行,放到后台的一个好处就是不会被ctrl+c终止
    ctrl+z #暂停当前的操作,退到前台
    jobs -l #查看当前所有的工作
    fg #继续执行暂停的任务
    fg %2 #将编号是2的任务拿回到前台处理
    bg %2 #让暂时的任务继续在后台执行
    kill -9 %2 #杀死编号2的任务

    ps -l #仅查看自己的bash相关进程
    top #动态查看进程,默认5秒更新一次
    #如果zombie不是0,说明有僵尸进程
    #Cpu行,如果%wa项值高说明IO资源占用高
    #按数字键1,可以查看多核CPU的负载率
    #swap使用量要尽量少,如果swap被大量使用说明物理内存严重不足
    #top默认按CPU使用率排序,按“M”按内存使用率排序,按“P”恢复按CPU排序

    echo $$ #查看当前bash的PID
    top -d 2 -p 18828 #根据PID查看top信息
    pstree #按树形结构显示进程之间的相关性
    kill -9 PID #强制关闭进程
    kill -15 PID #正常关闭进程
    killall #以该命令名称启动的进程全部关闭
    killall -9 bash #关闭所有的bash连接

    free #查看内存使用情况,注意一般系统就算程序不多,内存也会被大部分使用,
    这是为了让系统的访问性能加速。但是swap最好不要被使用,如果超过20%
    说明物理内存已经不足
    netstat -anp | grep 3306 #查看3306端口被什么程序占用
    vmstat 1 #每一秒查看一次CPU状态
    vmstat 1 3 #每一秒查看一次CPU状态,只查看3次
    vmstat -d #系统上所有磁盘的读写状态

    查看CPU使用情况:
    1.top命令,按CPU排序看CPU使用率,可以按数字1看各核CPU使用情况。
    2.vmstat 1命令,看参数r,等待运行的进程数。参数b休眠状态的进程数,数字越大CPU越忙。看参数in,每秒被中断的线程次数,看参数cs,每秒进行的事件切换次数,数字越大代表系统与接口设备通信非常频繁。

    查看内存使用情况:
    1.top命令,按“M”按内存使用率排序。看Mem和Swap行的内存使用情况,一般Mem系统为了性能加速都会把物理内存使用完,而如果Swap虚拟内存被使用很多甚至超过20%说明物理内存严重不足。
    2.free命令,和top命令类似。
    3.vmstat 1命令,si命令,由磁盘中将程序取出的量。so命令,由于内存不足而将没用到的程序写入到磁盘的swap的容量。如果si和so数字太大,说明系统性能很差。

    查看IO使用情况:
    1.top命令,主要看%wa参数,如果数字大说明IO使用频繁。
    2.vmstat命令,bi参数,由磁盘写入的块数量,bo参数,写入到磁盘去的块数量,如果数字大说明IO使用频繁。

     
    SELinux

    /pro/* #进程都在内存中,内存的数据都写入到此目录下
    fuser -uv /proc #找出正在使用该文件的程序
    lsof #列出被进程打开的文件名
    pidof crond #找出某个正在执行的进程的PID
    SELinux #是美国国家安全局开发的Linux内核,通过进程控制权限,而不是通过用户,如httpd进程只能访问/var/www目录

    第18章  认识系统服务

    cat /etc/services #查看端口和服务对应关系

    /etc/init.d #启动脚本目录,其实是一个链接,真实目录是 /etc/rc.d/init.d
    /etc/sysconfig #各服务的初始化环境配置文件
    /var/lib #各服务产生的数据库,如MySQL的数据库默认在/var/lib/mysql
    service #是一个shell,后面跟的服务名需与/etc/init.d的对应,使用service启动服务实际上就是调用了/etc/init.d
    super daemon管理的配置文件都在/etc/xinetd.d/*目录下
    /etc/xinetd.conf #是super daemon的配置文件

    service --status-all #查询所有的服务状态
    chkconfig --list crond #查看服务的状态
    启动Linux时,可以进入不同的模式,X窗口是run level5,纯文本界面是run level3
    chkconfig --level 3 crond on #将crond服务设置成在run level3级别的开机启动
    chkconfig crond on #默认开启level2、3、4、5等级
    /etc/init.d/httpd status #查看服务是否开启了,status其实是参数
    ntsysv #类图形界面管理模式,CentOS特有的

    执行自定义服务

    步骤1.在/etc/init.d目录下放入脚本文件myvbird,重要的是第二行:以run level3 5启动,以80顺序启动,以70顺序结束。

    #!/bin/bash
    #chkconfig:35 80 70
    #description:
    echo "Nothing"

    步骤2.执行 chkconfig --add myvbird  加入管理

            删除管理可以使用 chkconfig --del myvbird

    第22章  软件安装:源码与Tarball

    hello.c文件
    
    #include <stdio.h>
    int main(void)
    {
      printf("Hello World
    ");
    }
    方式1:
    1.gcc hello.c #编程源码文件,默认会生成a.out的执行文件
    
    方式2:
    1.gcc -c hello.c #先编译生成hello.o目标文件
    2.gcc -o helo hello.o #通过目标文件生成可执行文件
    
    使用make可以简化编译过程,执行make时,make会搜索当前目录下的makefile文件,makefile文件记录了源码如何编译的详细信息。一般要安装的软件会有configure检测程序来生成makefile文件。
    
    makefile文件如(注意第二行的空白其实是个tab键):
    main:thanks.o
            gcc -o thanks thanks.o
    clean:
            rm -f thanks thanks.o
    
    执行make创建thanks执行文件,执行make clean,删除指定文件。

    yum groupinstall "Development Tools" #通过yum方式安装gcc编译器


    一般下载的源码放在/usr/local/src下面,
    第一步: ./configure --prefix=/usr/local/ntp 生成Makefile文件,指定要安装的位置,执行完检查是否找到了gcc编译程序,是否成功生成了Makefile文件
    第二步: make clean;make
    第三步: make check
    第四步: make install


    ldd /usr/bin/passwd 查看程序含有的动态函数库


    第22章  软件安装:源码与Tarball


    RPM 安装方式只能安装在原本默认的硬件与操作系统上,路径默认是安装在 /usr/bin /usr/lib 等目录下,可以通过使用--prefix 新路径,将软件安装到其它路径下
    SRPM是Source RPM的意思,即含源码的RPM,可以根据参数重新编译成RPM,拓展名是***.src.rpm

    rpm -ivh package_age
    rpm -ivh a.rpm b.rpm 连续安装多个rpm
    rpm -ivh http://website.name/path/pkgname.rpm 直接由网络安装
    /var/lib/rpm 这个目录下存放rpm安装的数据库文件
    rpm -ivh package_age --preifx 新路径 指定软件安装位置
    rpm -ivh a.rpm --replacepkgs 重复安装软件


    yum info httpd 查看软件安装情况
    yum repolist all 列出目前yum server所使用的容器有哪些
    /etc/yum.repos.d/ 目录是存放yum的设置文件
    yum install pam-devel 安装软件
    yum remove pam-devel 删除软件

     
  • 相关阅读:
    redis主从架构
    redis持久化
    git 首次push失败
    Java8 CompletableFuture
    Mac Item2自动远程连接服务器
    Java8 日期和时间类
    【LeetCode】31. 下一个排列
    【LeetCode】30. 串联所有单词的子串
    【LeetCode】29. 两数相除
    【LeetCode】28. 实现 strStr()
  • 原文地址:https://www.cnblogs.com/zhuawang/p/4942696.html
Copyright © 2011-2022 走看看