运维 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),升级的规则是:在任何情况下安装的软件包都不会被删除,或者未安装的包被检索和安装。如果更新对你很重要,要使用upgradedist-upgrade除了执行upgrade之外,还会智能的处理包的依赖关系,所以说dist-upgrade可能会移除一些包。如果你想事情「正常工作」,可能要使用dist-upgrade来确保解决依赖关系
来自: