运维 FAQ
Table of Contents
1. Shell
1.1. 登录读取配置的流程
广义的 shell 分两种,一种为 login shell(通过终端登录),另外一种为 non-login shell(通过图形界面登录)。
所有 shell 都会走的流程:
/etc/profile
: 系统整体的设置,不建议修改/etc/inputrc
: 设置终端热键,声音等/etc/profile.d/*sh
: 设置 bash 操作接口的颜色、语系、ll 与 ls 命令的别名、vi 命令的别名,which 的命令的别名等/etc/profile.d/i18n.sh
: 设置语言,CentOS 7 是lang.sh
脚本
1.1.1. login shell
~/.bash_profile
~/.bash_login
~/.profile
bash 的 login shell 只会读取上面三个文件中的一个,而读取的顺序则是按照上面的顺序。而一般情况下 ~/.bash_profile
中会有这样一块代码:
# Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi
如果存在 ~/.bashrc
则使用它,而 ~/.bashrc
中又会包含这样一段代码:
# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
触发加载 /etc/bashrc
的内容。整理下来 login shell 的读取流程是: ~/.bash_profile => ~/.bashrc => /etc/bashrc
。
1.1.2. non-login shell
仅仅会读 ~/.bashrc
> =/etc/bashrc
1.2. ~/.profile
和 ~/.bashrc
的区别
- 这两者都具有个性化定制功能
~/.profile
可以设定本用户专有的路径、环境变量等等,它只能登入的时候执行一次~/.bashrc
也是某用户专有设定文档,可以设定路径,命令别名,每次 shell script 的执行都会使用它一次
1.3. /etc/bashrc
做了哪些事?
- 依据不同的 UID 规定 umask 的值
- 依据不同的 UID 规定提示符(PS1变量)
- 调用
/etc/profile.d/*.sh
的设置
1.4. ~/.bash_history
是干嘛的?
历史命令记录,登录之后读入内存。
1.5. ~/.bash_logout
是干嘛的?
记录了当我注销 bash 后系统再帮我做完指定的操作才能离开。
1.6. 查看当前 shell
- 所有的系统Shell:
cat /etc/shells
- 查看用户对应的 shell:
cat /etc/passwd
或者echo $SHELL
2. 如何矫正系统时间
- 修改时区:
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- 时间同步:
sudo ntpdate time.windows.com
3. 如何查看机器基本信息(发行版本,CPU,内存等)
cat /etc/os-release
: 发行版本cat /etc/issue
: 操作系统版本cat /etc/inittab
: 查看启动项,使用 systemd 的系统,已经不再需要这个文件cat /etc/passwd
: 查看所有用户的列表cat /etc/group
: 查看用户组cat /proc/version
: Linux 版本号,相当于uname -r=,=uname-a
查看更多信息cat /proc/cpuinfo
: CPU 信息cat /proc/meminfo
: 内存信息(i.e. mem used, free, swap size)cat /proc/partitions
: 所有设备的所有分区cat /proc/swasps
: 所有 swap 分区的信息df -h
: 查看硬盘大小du -sh
: 查看当前文件夹大小free
: 查看系统可用内存,可选参数-m
-h
4. apt-get update 和 apt-get upgrade 的区别
先运行 update
,然后再运行 upgrade
。它们两个没有包含对方的功能,各自做的事情不同。
apt-get update
更新可用包列表和他们的版本,但是不安装和升级任何版本apt-get upgrade
升级你已有包的到最新版本,更新列表之后,程序包管理器将会了解你已经安装的软件的可用更新。 这就是为什么首先你需要update
还有一个命令是 dist-upgrade
,它跟 upgrade
的区别:
upgrade
是对当前已经安装的包升级到最新版本(你首先要update
),升级的规则是:在任何情况下安装的软件包都不会被删除,或者未安装的包被检索和安装。如果更新对你很重要,要使用upgrade
dist-upgrade
除了执行upgrade
之外,还会智能的处理包的依赖关系,所以说dist-upgrade
可能会移除一些包。如果你想事情「正常工作」,可能要使用dist-upgrade
来确保解决依赖关系
来自: