Linux
管理 RHEL7 的用户和组
用户的属性修改
chage -l [username] #查看用户信息
usermod --expiredate=YYYY-MM-DD [username] #有限时间内授予账户访问
groups [username] #查看组别
id [username] #查看用户id,组id,组名
--append --group [组名,组名] #-aG#添加用户
--home / --d [绝对路径] #修改主路径
--shell []
usermod --append --groups gacanepa,users --home /tmp --shell /bin/sh [username]
用户的锁定与解锁
usermod --lock [username] #锁定密码来停用帐户
usermod --unlock [username] #解锁密码
用户与组的删除
如果一些文件属于该组,删除组时它们不会也被删除。但是组拥有者的名字将会被设置为删除掉的组的GID
groupdel [group_name] # 删除组
userdel -r [user_name] # 删除用户,并删除主目录和邮件池
文件权限
“ls -l”输出中的前10个字符表示每个文件的属性
- 第一个字符
- – (连字符): 一个标准文件
- d: 一个目录
- 一个符号链接
- 字符设备(将数据作为字节流,例如终端)
- 块设备(以块的方式处理数据,例如存储设备)
接下来的九个字符,分为三个组,被称为文件模式,并注明读(r)、写(w)、和执行(x)权限授予文件的所有者、文件的所有组、和其它的用户
出于安全考虑,你应该确保在正常情况下,尽可能避免777权限
ls -l /etc | grep rwxrwxrwx #寻找777权限的文件
chmod 777 filename #修改权限
# u:用户权限 g:组所有者权限 o:所有权限
#权限可以通过+ 或 -来授予和收回
chmod a+x filename #修改权限
文件所有组和所有者
chown user:group filename #改变所有组和所有者
chown :group filename # 仅改变所有组
chown user: filename # 仅改变所有者
chown --reference=ref_filename filename #“克隆”一个文件的所有权(所有组和所有者)到另一个文件
编辑文本文件及分析文本
grep 和正则表达式
grep -Ei 'svm|vmx' /proc/cpuinfo
grep -Ei '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' -o /etc/fstab #存储设备的 UUID
grep -Ei [[:digit:]]{4} /etc/passwd
- [:alnum:] 任意字母或数字 [a-zA-Z0-9]
- [:alpha:] 任意字母 [a-zA-Z]
- [:blank:] 空格或制表符
- [:cntrl:] 任意控制字符 (ASCII 码的 0 至 32)
- [:digit:] 任意数字 [0-9]
- [:graph:] 任意可见字符
- [:lower:] 任意小写字母 [a-z]
- [:print:] 任意非控制字符
- [:space:] 任意空格
- [:punct:] 任意标点字符
- [:upper:] 任意大写字母 [A-Z]
- [:xdigit:] 任意十六进制数字 [0-9a-fA-F]
- [:word:] 任意字母,数字和下划线 [a-zA-Z0-9_]
进程管理:开机,关机
- 初始化 POST(加电自检)并执行硬件检查;
- 当 POST 完成后,系统的控制权将移交给启动管理器的第一阶段(first stage),它存储在一个硬盘的引导扇区(对于使用 BIOS 和 MBR 的旧式的系统而言)或存储在一个专门的 (U)EFI 分区上。
- 启动管理器的第一阶段完成后,接着进入启动管理器的第二阶段(second stage),通常大多数使用的是 GRUB(GRand Unified Boot Loader 的简称),
它驻留在 /boot 中,然后开始加载内核和驻留在RAM 中的初始化文件系统(被称为 initramfs,它包含执行必要操作所需要的程序和二进制文件,以此来最终
挂载真实的根文件系统)。 - 接着展示了闪屏(splash)过后,呈现在我们眼前的是类似下图的画面,它允许我们选择一个操作系统和内核来启动:
- 内核会对接入到系统的硬件进行设置,当根文件系统被挂载后,接着便启动 PID为 1 的进程,这个进程将开始初始化其他的进程并最终呈现给我们一个登录提示符界面。
它们的父进程(或者换句话说,就是那个开启这些进程的进程)为systemd
- 在系统启动期间,systemd 允许并发地启动更多的进程(相比于先前的SysVinit,SysVinit 似乎总是表现得更慢,因为它一个接一个地启动进程,检查一个进程是否依赖于另一个进程,然后等待守护进程启动才可以启动的更多的服务)
- 在一个运行着的系统中,它用作一个动态的资源管理器。这样在启动期间,当一个服务被需要时,才启动它(以此来避免消耗系统资源)而不是在没有一个合理
的原因的情况下启动额外的服务。 向后兼容 sysvinit 的脚本。
systemd 由 systemctl 工具控制
service servicename stop #旧版
systemctl stop servicename #新版
shutdown -h now #旧版
systemctl poweroff #新版
chkconfig -list #旧版
systemctl -type=service #新版
renice [-n] priority [-gpu] identifier #调整一个进程的执行优先级
kill -9 identifier # 杀死一个进程或一个进程组
kill -s SIGNAL identifier # 杀死一个进程或一个进程组
pkill -s SIGNAL identifier # 通过名称或其他属性来杀死一个进程
Docker
Docker基本知识
区别 | 传统虚拟机 | Docker |
---|---|---|
传统虚拟机技术是虚拟出一套硬件后,在其上运行个完整操作系统,在该系统上再运行所需应用进程 | 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟 |
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为 MB | 一般为 G B |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
docker基本概念:镜像(Image)容器(Container)仓库(Repository)
Docker 不是虚拟机,容器就是进程。
镜像使用的是分层存储,容器也是如此。每一个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层(容器消亡时,容器存储层也随之消亡)。
数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器可以随意删除、重新 run ,数据却不会丢失
Docker配置与使用
- 安装Docker Toolbox(安装到C盘)
- 在C:\Program Files\Docker Toolbox路径下右键打开git-bash.exe
- 运行sh start.sh(需要下载Boot2Docker.ISO文件)(把最新ISO文件放在用户目录/.docker/machine/cache中)
- docker-machine设置别名dm,如下
- dm create test
- 进入Docker
- dm env test dm ssh test
- dm env test eval $("C:\Program Files\DockerToolbox\docker-machine.exe" env test)
git-bash别名设置
在git安装目录下/etc/bash.bashrc中加入别名
alias cdvagrant='cd ~/tranning/vagrant/centos7.3'
alias ll='ls -l'
alias ls='ls -F --color=auto --show-control-chars'
alias node='winpty node.exe'