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

[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: 登录用户需要密码
无: 登录用户不需密码
防止登录时泄露用户名
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
su -
su
图形端界面开启终端
执行脚本, 子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和非登录shell)