Linux(Centos7)系统基本操作
目录结构
- bin 普通用户使用的命令
- sbin 管理员使用的命令
- dev 设备文件
- proc 虚拟文件系统,反映内核进程信息实时状态
- usr 系统文件,类似C:Windows
[注]: RHEL7 /bin /sbin /lib /lib64 都在此目录
- boot 启动文件
- etc 配置文件
- lib 库文件
- lib64库文件
- tmp 临时文件
- var 变化文件
注:设备挂载目录
- media 移动设备挂载点
- mnt 手工挂载点
- misc automount进程挂载
- net automount进程挂载
VIM
命令模式
光标定位
hjkl //上下左右
0 $ //行首行尾
gg G //文首文尾
3G //进入第三行
文本编辑
y //复制 yy 3yy ygg yG
d //删除 dd 3dd dgg dG
D //从光标处删除到行尾
u //undo撤销
r //修改一个字符
可视块模式
块插入: //选择块,I 在块前插入字符
块替换: //选择块,r 输入替换的字符
块删除: //选择块,d | x
块复制: //选择块,y
扩展命令模式
读入文件/另存为
:w /路径 //另存为
:r /路径 //读文件到当前行后
:5 r /路径 //读文件到第5行后
文件管理
目录
mkdir -p //递归创建
mkdir /home/{dir1,di2} //意会
复制
cp -r //递归拷贝
cp -rf //覆盖不提示
删除
rm
-r //递归
-f //强制
-v //详细过程
查看
cat
-n //显示行号
-A //包括控制字符
tail & head
head //查看头 后跟 -数字
tail //查看尾
-数字
-f //动态查看
文件时间
-访问时间:atime //查看内容
-修改时间:mtime //修改内容
-改变时间:ctime //修改权限
-删除时间:dtime //文件删除时间
文件类型
ls -l
- //普通文件
d //目录文件
b //设备文件(块设备)存储设备,如U盘等;
c //设备文件 (字符设备) 打印机等。
p //管道文件
l //连接文件
附注
type
# type ll
file
# file /etc/hostname
/etc/hostname: ASCII text
stat
# stat /etc/hostname
用户管理
基本操作
查看登录信息
id
uid=0(root) gid=0(root) groups=0(root)
查看文件的owner(所有者)
ll /home/
相关管理
用户组
groupadd //创建
groupdel //删除
用户
useradd //创建
# -u //指定uid
# -d //指定家目录
# -s /sbin/nologin //指定shell
# -G //创建目录指定附加组
# -g //指定组
userdel //删除 -r 同时删除家目录和mail spoo
用户密码
passwd 用户名 //root可设置任何用户密码
passswd //普通用户只能给自己修改密码
组成员管理
usermod -G 组 用户名 //覆盖原有的附加组
usermod -aG hr niuniu2 //增加新的附加组
其他选项管理
usermod -s /sbin/nologin //修改登录Shell用户组
提权
su
举个栗子:
[alice@tiezhu ~]$ useradd u1
-bash: /usr/sbin/useradd: 权限不够
[alice@tiezhu ~]$ su - root
password:
[root@tianyun ~]# useradd u1
sudo
sudo(选项)(参数)
文件权限
- 权限对象 属主:u 属组:g 其他人:o
- 基本权限类型 读:r , 4 写:w ,2 执行 : x ,1
基本权限 UGO
chown
chown 属主.属组 文件 //改属主、属组 -R 递归
chown 属主 文件 //改属主
chown .属组 文件 //改属组
chgrp
chgrp 属组 文件 //改文件属组
chgrp -R 属组 文件 //改文件属组
chmod
chmod u+x 文件 //属主增加执行
chmod a=rwx 文件 //所有人等于读写执行行
chmod 644 文件 //数字大法
基本权限 ACL
getfacl 、setfacl
举个栗子
# setfacl -m u(g,o):alice:rw /home/test.txt //增加ACL权限
# setfacl -x u(g,o):alice /home/test.txt //删除ACL权限
# setfacl -b /home/test.txt //删除所有ACL权限
# setfacl -R -m u:alice:rwx /home //方法一
# setfacl -m d:u:alice:rwx /home //方法二
//赋予alice对/home读、写、执行权限
高级权限
- sudo 针对某个用户以root的身份执行某些命令
- suid 任何用户执行有suid权限程序(eg:/usr/bin/rm)时都在以root身份在运行。
特殊位
- suid针对文件/程序时,具备临时提升权限。 4
- sgid针对目录时。该目录具备继承属组的特性。2
- sticky针对目录设置,该目录内容只有root和属主可删除 1
设置方式
字符
# chmod u+s fiel
# chmod g+s dir
# chmod o+t dir
数字
# chmod 4777 fiel
# chmod 7777 file
# chmod 2770 dir
# chmod 3770 dir
文件属性chattr
chattr +a file //只可追加
chattr +i file //不可更改、重命名、删除
chattr +A file //不可更改访问时间(atime)
+ - //追加 移除
进程管理
查看进程
静态查看
# ps aux |less
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2164 648 ? Ss 08:47 0:00 init [5]
USER 运行进程用户
PID 进程ID
%CPU CPU占用率
%MEM 内存占用率
VSZ 占用虚拟内存
RSS 占用实际内存
TTY 进程运行终端
STAT 进程状态
START 进程的启动时间
TIME 进程占用CPU总时间
COMMAND 进程文件、进程名
R 运行
S 可中断睡眠
D 不可中断睡眠
T 停止进程
Z 僵尸进程
X 死掉的进程
查看指定进程PID
# pidof 进程名
进程树
pstree
动态查看
# top
# top -d 1 //每一秒刷新
# top -d 1 -p 10123 //查看指定进程的动态信息
# top -d 1 -u user //查看指定用户的进程
# top -d 1 -b -n >top。txt //将两次top信息写入到文件
h|? 帮助 < > 向前 向后
M 查看内存使用排序 z 彩色
P 按CPU使用排序 W 保存top环境设置
N 以PID的大小排序
R 对排序进行反转
f 自定义显示字段
1 显示所有CPU负载
信号控制进程
# kell -1 重新加载配置
# kill -9 强杀
# kill -15 正常终止
# kill -18/-19 继续/暂停
进程优先级nice
使用tiop更改
# top 输入r
(-20高) ---0--- (19低)
使用shell更改
# ps aux //查看pid
# renice -20 pid //更改
管道及重定向
重定向
输出重定向
> //覆盖
>> //追加
&> /dev/null //重定向到空
输入重定向
# cat >file <<EOF
>内容
>内容
>EOF
管道
|
|tee #tee命令就像管道的T接头。
查找压缩
文件查找
grep:文件内容过滤
find: 文件查找
which:命令查找
which
查找tree 命令位置
# which tree
/bin/tree
find
公式:find [path...] [options] [expression] [action]
名字 路径 选项 表达 行动
name //名字 (a/m/c)time //访问时间、修改时间、改变时间
size //大小 user/group //用户、组
maxdeoth //目录 perm //权限
按文件名
# find / -name "name"
# find / -iname "name" //忽略大小写
按文件大小
# find / -size +5M //大于5M
# find / -size 5M //等于5M
# find / -size -5M //小于5M
指定查找目录深度
# find / -maxdepth 3 -a -name "ifcfg-en*" //三层
按时间查找
# find / -mtime(-atime/ctime) +5(5/-5) //时间超过(等于、小于)5天
按属主、属组
# find / -user jack //属主是jack的文件
# fian / -group hr //属组是hr的文件
# find / -nouser //缺失UID的文件
按文件权限
- 普通权限
# find / -prem 644 //精确权限
# find / -prem -644 //包含权限即可
- 特殊权限
# find /usr/bin /usr/sbin -perm -4000 -ls //包含set uid
# find /usr/bin /usr/sbin -perm -2000 -ls //包含set gid
# find /usr/bin /usr/sbin -perm -1000 -ls //包含sticky
找到后处理动作
-print //打印(默认选项)
-ls //列出
-exec //后跟自定义shell命令
-ok //后跟自定义shell命令
文件打包及压缩
打包压缩
# tar -cf test.tar //打包
# tar -czf test.tar.gz //z是gzip
# tar -cjf tset.tar.bz //j是bzip
# tar -cJf test.tar.xz //J是xzip
解压
# tar xf test.tar.xz //不显示详细信息
↑------xvf 可显示详细信息
# tar xvf test.tar.bz -C /tmp //-C重定向到目录 /tmp
软件包管理
软件包类型
- 源码包 需编译
举个栗子 nginx-1.12.1.tar.gz
- 二进制包 已编译
举个栗子 mysql-community-common-5.7.12-1.el7.x86_64.rpm
# 在RedHat/Centos 平台常见的二进制包类型为rpm,工具为rpm,rpmbuild ,在线安装方式为yum
rpm包管理
获得rpm包的途径
- RedHat光盘或官方网站 ftp://ftp.redhat.com
- rpmfind.net
- 相应软件官方网站 如
http://www.mysql.com
rpm包结构
举个栗子
ntfs-3g-2011.4.12-5.el5.x86_64.rpm
软件包名 版本号(Version) 发布版本(Release) 系统平台
ntfs-3g 2011.4.12 5.el5 x86_64
使用RPM工具管理RPM包
安装
# rpm -ivh local_path(本地路径) //本地安装
# rpm -ivh url_path(url) //网络安装
额外选项
--nosignature //不检验软件包的签名
--force //强制安装软件包 yum reinstall
--nodeps //忽略依赖关系
查询
rpm -q ntfs-3g 查询指定包是否安装
rpm -qa |grep ntfs 查询某个包
rpm -qa ntfs-3g 查询ntfs-3g安装的文件
rpm -qf /usr/bin/ntfs-3g 查询该文件属于哪个rpm包
rpm -wc ntfs-3g 查询某个包安装的配置文件
rpm -qd vsftpd 查看安装的帮助文档
卸载
rpm -e ntfs-3g
YUM
基础源
路径
# ls /etc/yum.repos.d/ //路径
命令
# yum install 包名 //安装
# yum update 包名 //升级包
# yum remove 包名 //卸载包
# yum info 包名 //查看包信息
# yum clean all //清理本地缓存
# yum clean plugins //清除插件缓存
# yum makecache //重建缓存
# yum provides /bin/mv //查看文件来自哪个包
# yum repolist //显示所有yum仓库
# yum disabled(enabled) //显示可用仓库
# yum list //列出可安装的包
# yum list updates //显示可更新的包
# yum list installed //显示已安装的包
# yum list recent //列出仓库最近增加的包
阿里源
http://mirrors.aliyun.com/
163源
http://mirrors.163.com
epel
yum -y install epel-release
官方源
如 nnginx
# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
tar源码包
获得途径
官方网站 如:
Apache: www.apache.org
Nginx: www.nginx.org
Tengine: tengine.taobao.org
安装源码包
^注1: 以编译安装tengine为例
^注2: 准备、解压、配置、编译、安装。
部署Tengine /Nginx服务器/WEB服务器
1. 下载源码包,准备软件包
2.准备编译环境如编译器gcc、make
# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
(pcre: 支持正则表达式,地址重写rewrite)
3.解压
# useradd www
# tar xvf tengine-2.2.0.tar.gz
# cd tengine-2.2.0
4.配置
./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_ssl_module \
--with-pcre
5.编译
# make
6.安装
# make install
7启动测试
# /usr/local/nginx/sbin/nginx //启动nginx服务器
# systemctl stop firewalld
看到网页,说明部署成功。
系统版本信息
uname
# uname 用于打印当前系统信息 内核版本号、硬件架构、主机名称和操作系统类型等)
-a 显示全部信息
-m 显示电脑类型
-n 显示网络上的主机名
-r 显示操作系统发行编号
-s 显示操作系统名称
-v 显示操作系统版本
cat 命令
# cat /etc/redhat-release //查看版本当前操作系统发行版信息
# cat /proc/version //查看当前操作系统版本信息
# cat /proc/cpuinfo //查看cpu相关信息,包括型号、主频、内核信息等
查看位数
# getconf LONG_BIT //查看运行在哪个位数下,但并不代表CPU不支持其他位数