美文网首页
磁盘分区, shell中四种变量, 登录shell和非登录she

磁盘分区, shell中四种变量, 登录shell和非登录she

作者: epiiplus1equal0 | 来源:发表于2019-01-23 12:33 被阅读0次

    [TOC]

    1. 系统安装时手动进行磁盘分区:

    /boot / /home swap
    200M 10G 5G 2G
    • 一般情况下FHS推荐根目录不要分的太大, 因为系统工作时根目录会被经常使用, 容易损坏而导致你的系统奔溃, 数据丢失.

    • /home目录可多分一些磁盘空间, 我工作所接触的生产环境一般都是新建一个账号, 然后在新建账号的家目录下部署服务, 这样既可以保证服务的管理用户单一, 也避免了系统内其他用户的误用

    • /boot分区不需要太大, linux系统的内核至今为止最大也就只有100M多

    • swap一般是分配的物理内存的1.5至2倍

    2. 如何安装物理机的系统?

    (1) 进入BIOS (PXE安装时按F8或F12键, 选择网络安装)

    (2) 按步骤安装

    3. 在字符界面可使用start启动本控制台的图形界面

    需要的软件:

    (1) X Windows 框架

    (2) GNOME / KDE

    4. 一些需要注意的地方

    date -d "121212" # 短选项用法
    date --date="201812121212" # 长选项用法
    date +"%Y-%m-%d %H:%M:%S" # 以"年月日时分秒的形式"显示当前日期
    
    # man页内有个SEEALSO, 可以查询与当前命令有关的其他命令
    man -k "strings" #展示man页数据库中命令行和帮助页均有"strings"
    mandb 更新man页数据库
    
    stat file # 查看文件的各项属性
    # 某些文件的atime需要关闭, 如网页(因为会被经常方位), 会损耗硬盘寿命, 那么如何修改?
    vi /etc/fstab
    # 修改挂载选项为noatime, 然后
    mount -o remount /
    # 文件的atime, mtime, ctime在文件备份是会被用到
    

    5. /etc/passwd

    username passwd UID GID comment 家目录 取得的shell
    x: 登录用户需要密码<br />无: 登录用户不需密码 防止登录时泄露用户名
    usermod -G [gid|组名] username # 给用户指定用户组(覆盖)
            -aG                   # 给用户在原有组的基础上添加附加组
    
    rm -rf .* # 删除隐藏文件
    rm -rf /etc/!(passwd) # 删除除了passwd以外的文件和目录
    
    gpasswd groupname # 修改组密码
    newgrp groupname # 切换到groupname的用户组
    userdel -r user1 # 删除用户 (1)/home/user1 (2)/var/spool/mail/user1
    groupdel groupname # 组内有管理员时不可被删除
    groupmems -[a|d] username -g groupname #管理组内成员
        -a 添加
        -d 删除
        -g 指定被修改的用户组
    
    # 每个文件 有一个UID和一个GID
    #    进程 有一个UID和>=1个GID
    
    用户访问一个文件时系统判断用户身份的顺序:
      (1) 文件拥有人
      (2)    拥有组
      (3)    其他人
    对目录来说, 拥有人对其有w权限还不够, 还有x权限才能对目录中的内容作出修改
    
    chmod|chown [-R] ... file
    chmod|chown --reference 模板 file
    只有root用户可以修改文件的拥有人
    只有root和文件的拥有人可以修改文件的拥有组, 但拥有人必须在组内
    

    6. shell中四种变量类型

    • 本地变量: 只在当前shell中生效
    • 环境变量: 只在当前shell和子shell中生效 # 本地变量 --export--> 环境变量
    • 全局环境变量: 在/etc/profile中定义的变量
    • 用户环境变量: 在~/.bash_profile中定义的变量
    env # 查看当前系统的全部环境变量
    set # 查看用户当前自定义的变量
    PS1 # 命令提示符
    HISTSIZE
    PATH # 只找一级目录
    
    \ # 去掉后面字符的特殊含义
    '' # 强引用
    "" # 弱引用, 对 $ ` \ ! 无效
    

    7. 登录shell和非登录shell

    登录shell 非登录shell
    login<br />su - su<br />图形端界面开启终端<br />执行脚本, 子shell, 子进程等
    • 只有登录shell才能读取/etc/profile和~/.bash_profile文件

    • /etc/bashrc和~/.bashrc 所有bash shell都可以读取到

    • 文件的读取顺序:

      (1) /etc/profile

      (2) ~/.bash_profile

      (3) ~/.bashrc

      (4) /etc/bashrc

    • ~/.bash_logout 只有登录shell在退出时才会读取此文件

      功能: (1) 自动备份

      ​ (2) 退出时清空临时文件

    • /etc/motd 所有用户登录时都会显示此文件中的内容

    8. 重定向与管道

    • 只有正确的输出才能通过管道
    find /etc -name passwd > find.out 2> &1 | wc -l
    # 发现最后的结果是0, 因为重定向和管道有冲突!
    
    echo "hello" | mail -s "test" jax
    echo "redhat" | passwd --stdin jax > /dev/null
    echo "test printer" | lpt -P printer_name
    
    command1 | tee filename | command2 # tee可以使正确的输出既重定向, 又通过管道符
    
    tr "A-Z" "a-z" < /etc/passwd # 输入重定向
    << # 多行输入, 常用于脚本
    mail -s "test" jax << EOF
    

    9. 一些常用命令需要注意的地方

    grep -w user1 # 以word的模式截取
    grep -[AX|BX] err # 筛选出err及其前X(后X)行的内容
    grep -r "strings" dir # 筛选出指定目录下的含有"strings"的文件
    cut -c 2-4 /etc/passwd # 截取第2至4个字符
    sort -t ":" -k 3 [-nrfu] /etc/passwd
      -n 以数字大小排列, 默认以ASCII值排列
      -r 降序, 默认升序
      -f 忽略大小写
      -u 去重
    uniq -c file # 只能去掉相邻行的重复, -c 为统计重复的行数(依旧是只能统计相邻行)
    sed '1,3s/yes/no/g' test.txt # 不对原文件做修改, \
                                 # 只在输出时将test.txt的第一至第三行内的所有yes替换为no
    sed -i.bak 's/dog/cat/g' test.txt # -i.bak为对原文件做修改并备份
        -e 操作1 -e 操作2 file # -e为多个操作同时进行
    

    10. vim编辑器

    :%s/dog/cat/gi
    # % 全文操作
    # 1,5 只对第一到第五行操作
    # s 替换
    # g global, 整行
    # i 忽略大小写
    
    ctrl + w , s # 水平窗口
    ctrl + w , v # 垂直窗口
    ctrl + w, 箭头 # 窗口之间切换
    

    相关文章

      网友评论

          本文标题:磁盘分区, shell中四种变量, 登录shell和非登录she

          本文链接:https://www.haomeiwen.com/subject/fdyjjqtx.html