磁盘分区, shell中四种变量, 登录shell和非登录she
2019-01-23 本文已影响0人
epiiplus1equal0
[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, 箭头 # 窗口之间切换