linux目录及结构
/etc #存配置文件
/var #存日志文件
/home #用户家目录
/root #root用户家目录
/bin #命令文件目录
/sbin #超级管理员命令目录
/dev #设备文件目录
/boot #系统启动核心目录
/lib #库文件目录
/mnt #挂载目录
/tmp #临时文件目录
/usr #用户程序存放目录
命令入门
-
uname 查看系统信息
sh[root@localhost /]# uname #查看系统信息 [root@localhost /]# uname #查看系统信息包括内核
-
ls列出文件命令
sh[root@localhost /]# ls -h #以便于阅读的形式列出文件信息 [root@localhost /]# ls -l #以列表的形式列出文件信息 [root@localhost /]# ls -a #列出文件所有信息,包括隐藏文件 [root@localhost /]# ls /tmp #列出tmp下所有文件信息
-
pwd 打印当前目录
sh[root@localhost /]# pwd #获取当前在哪个目录下
-
cd 目录切换
sh[root@localhost /]# cd / #切换到根目录 [root@localhost /]# cd ../ #切换到上一级目录 [root@localhost /]# cd test #切换到当前目录下的test目录
-
clear 清空屏幕
sh[root@localhost /]# clear #清空当前屏幕信息
-
whoami 打印当前用户
sh[root@localhost /]# whoami #打印当前是哪个用户
-
reboot 重启
sh[root@localhost /]# reboot #重启系统命令
- shutdown 关机
sh[root@localhost /]# shutdown #重启系统命令,默认是60s后关机 [root@localhost /]# shutdown now #立即关机 [root@localhost /]# shutdown -h 20 #20分钟后关机 [root@localhost /]# shutdown -c #取消系统关机
-
type 查看命令是内部命令还是外部命令
sh[root@localhost /]# type cd #查看cd命令是内部命令还是外部命令 cd 是 shell 内嵌 [root@localhost /]# type ping #查看ping是内部命令还是外部命令 ping 是 /usr/bin/ping
-
history 查看历史命令
sh[root@localhost /]# history
-
hostnamectl 更改主机名
sh[root@localhost /]# hostnamectl set-hostname localhost #更改主机名为localhost
命令帮助
sh
[root@localhost /]# help cd #查看内嵌命令帮助,这里的cd的是命令
[root@localhost /]# ping --help #查看外部命令帮助,这里的ping是命令
目录文件相关命令
-
创建目录 mkidr
sh[root@localhost tmp]# mkdir test #在当前目录下创建一个名为test的目录 [root@localhost /]# mkdir /tmp/test1 #用绝对路径的方式创建目录 [root@localhost tmp]# mkdir test2 test3 #同时创建 test2和test3目录 [root@localhost tmp]# mkdir test{4..6} #创建test4和test5和test6目录,{这里面表示有规律的新增} [root@localhost tmp]# mkdir -p a/b/c #在当前目录下递归创建 a/b/c目录
-
删除目录 rmdir(必须是空目录)
sh[root@localhost tmp]# rmdir test6 #删除test6目录 [root@localhost tmp]# rmdir -p a/b/c #递归删除a/b/c空目录
-
文件创建 touch
sh[root@localhost tmp]# touch 1.txt #创建1.txt文件 [root@localhost tmp]# touch 2.txt 3.txt #同时创建多个目录 [root@localhost tmp]# touch {4..6}.txt #有规律的创建多个目录
-
文件删除
sh[root@localhost tmp]# rm 1.txt #删除文件 rm:是否删除普通空文件 "1.txt"?y [root@localhost tmp]# rm -f 2.txt #忽略提示直接删除文件,-f忽略提示 [root@localhost tmp]# rm -rf test #递归删除test目录及test目录下所有文件,-r 表示递归,-f忽略提示 [root@localhost tmp]# rm -rf *.txt #删除当前目录下所有以txt结尾的文件,这里的*表示任意多个字符
-
复制操作
sh[root@localhost tmp]# cp test1 / #将test1目录拷贝到根目录下,拷贝文件也是一样的操作 [root@localhost tmp]# cp test1 /test2 #拷贝并重命名
-
剪切操作
sh[root@localhost tmp]# mv test1 / #将test1目录剪切到根目录下,剪切文件也是一样的操作 [root@localhost tmp]# mv test1 /test2 #剪切并重命名
-
打包操作与解压操作
sh[root@localhost tmp]# touch 1.txt 2.txt 3.txt #先创建三个文件准备打包 [root@localhost tmp]# tar -cvf 123.tar 1.txt 2.txt 3.txt #将1.txt 2.txt 3.txt打包成123.tar,-c表示打包,-f表示文件名,-v显示打包进度 [root@localhost tmp]# tar -xvf 123.tar #将文件解压到当前目录 ######下面是.gz文件打包和解压 tar -zcf 名称.tar.gz 要打包的文件 #打包 tar -zxf 名称.tar.gz #解压
-
查看文件命令
shcat 1.txt #查看文件 tail -n 5 1.txt #查看最后5行 tail -f 1.txt #动态监听文件变化 head -n 5 1.txt #查看文件前5行 less 1.txt #查看大文件
-
wc 命令统计文件行数,单词数,字节数
shwc -l 1.txt #统计行数 wc -w 1.txt #统计单词数 wc -c 1.txt #统计字节数
-
du 统计文件或文件夹大小
du -s 1.txt #总大小 du -sh 1.txt #以便于阅读的形式统计
-
find 查找文件命令
shfind /tmp -name 1.txt #查询/tmp下名为1.txt的文件,-name按名称查 find /tmp -type f #查询/tmp下类型为普通文件的文件 find /tmp -size +1M #查询/tmp下大于1M的文件
-
grep 过滤命令
shgrep -n root /etc/passwd #查询/etc/passwd文件有包含root的行,并显示行号 -n表示显示行号
-
echo 标准输出,在终端中输入指定的内容,并输出
shecho "hello word" #输出hello word
-
> 或 >> 重定向
">" 标准输出重定向:覆盖输出,会覆盖原先的文件内容
">>"追加重定向:追加输出,不会覆盖原始文件内容,只会在原始内容末尾继续添加
shecho "hello word" > a.txt #输出heloo word 到a.txt文件,会覆盖原来的内容 echo "hello word" >> a.txt #追加heloo word 到a.txt文件,不会覆盖原来的内容
-
ln 建立软链接
软链接会产生新的inode和block,而硬链接不会
软链接可以链接目录,而硬链接只能链接文件
软链接源文件被删除软链接无法找到,而硬链接不会
shln -s /tmp/pass /opt/pass_soft #为/tmp/pass文件建立一个/opt/pass_soft的软链接 ln /tmp/pass /opt/pass #为/tmp/pass文件建立一个/opt/pass的硬链接
文件管理vim
vim有4种模式
- 命令行模式,默认使用vim进入的是命令行模式
- 编辑模式,输入i或者a从命令行模式进入编辑模式,按esc键退回命令行模式
- 末行模式:输入: 冒号进入末行模式,末行模式可以按wq保存退出,q!不保存退出,按两下esc键退回命令行模式
- 可视化模式,可以进行复制粘贴,和批量注释等操作
命令行模式下的常用操作
sh
gg #定位到首行
GG #定位到末行
4G #定位到第4行
yy #复制当前行
p #粘贴到下一行
dd #剪切或删除当前行
末行模式下常用操作
sh
#按:冒号进入末行模式
:wq #保存退出
:q! #不保存退出
:set nu #显示行号
:set nonu #取消显示行号
:s/c/3 #替换当前行第一个c字符替换为3 s表示替换当前行 c要被替换的字符 3替换后的字符
:s/c/3/g #替换当前行所有c字符替换为3 s表示替换当前行 c要被替换的字符 3替换后的字符 g表示所有
:%s/c/3/g #替换整个文档所有c字符替换为3 %s表示替换整个文档 c要被替换的字符 3替换后的字符 g表示所有
/abc #查找abc字符,按n向下查找,按N向上查
用户和用户组管理
linux系统可以有多个用户同时登录,一个用户有一个主组和多个副组,用户拥有主组和副组的权限
-
用户组操作
shgroupadd g1 #新增一个叫g1的用户组 groupadd -g 1002 g2 #新增一个编号为1002 的g2用户组 tail -5 /etc/group #查看用户组 groupmod -n g3 g1 #把g1用户组改名为g3
-
用户操作
shuseradd u1 #创建u1用户 useradd -g g2 u2 #创建u2用户并添加到g2组 usermod -g g2 u1 #修改u1的主组为g2 usermod -l u3 u1 #将用户u1改名为u3 id u1 #查看u1的信息 cat /etc/passwd #每创建一个用户都会在/etc/passwd文件添加一行信息
-
用户文件信息
cat /etc/group #查看用户组 cat /etc/passwd #查看用户 cat /etc/shadow #用户密码文件
-
设置用户密码
shpasswd u2 #设置u2密码,按提示操作 echo "123" | passwd --stdin u2 #将u2密码设置为123
-
切换用户
su u2 #切换到u2用户
-
wheel组
只有wheel组中的用户,才可以通过su命令切换到root账户,默认wheel组不生效,需要配置开启wheel组
shvim /etc/pam.d/su #编辑切换用户的配置文件 #%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. auth required pam_wheel.so use_uid #将这一行注释打开则为wheel组才能切换用户操作 auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-auth password include system-auth session include system-auth session include postlogin session optional pam_xauth.so
-
用户删除
shuserdel u1 #删除u1用户但不删除u1的家目录 userdel -r u2 #删除u2用户同时删除u2的家目录
权限管理
权限基本概念
sh
drwxr-xr-x. 2 root root 6 10月 3 10:42 test1
drwxr-xr-x #第一位表示文件类型,d为目录,-为普通文件
#第2,3,4表示所属用户的权限
#第5,6,7表示所属用户组的权限
#第8,9,10表示其他用户权限
#第一个root表示所属root用户
#第二个root表示所属root用户组
d表示目录
r可读 4
w可写 2
x可执行 1
linux的文件类型
-: 普通文件
d:目录文件
s:套接字文件
l:链接文件
c:字符设备文件
p:管道文件
b:block,块设备文件
chmod 修改文件权限
sh
chmod -R u+x test #对test及test下的文件的所属用户添加可执行权限,-R表示递归,一般用于目录
chmod -R g+x test #对test及test下的文件的所属用户组添加可执行权限,-R表示递归,一般用于目录
chmod -R o+x test #对test及test下的文件的其他用户添加可执行权限,-R表示递归,一般用于目录
chmod 777 test #对test目录的用户及所属组及其他用户的权限设为可读可写可执行
chown 修改文件所属用户和所属组
sh
chown root:user01 a.txt #将 a.txt文件的所属用户改为root,所属组为user01
特殊权限suid
只能设置在可执行文件上,任何人执行可执行文件都可以拥有该文件所属用户的权限
sh
chmod u+s /usr/bin/cat #为cat命令添加suid权限
chmod u-s /usr/bin/cat #取消suid权限
特殊权限sgid
SGID 属性可运用于文件或者目录,运用该文件可拥有可属组权限
sh
chmod g+s /tmp/dir_sgid #添加sgid权限
chmod g-s /tmp/dir_sgid #取消sgid权限
特殊权限sticky
sticky 权限只能运用于目录上,限制普通用户在此目录下只能删除自己的文件
sh
chmod o+t /tmp/dir_sticky #添加sticky权限
chmod o-t /tmp/dir_sticky #取消sticky权限
通信IP配置
sh
ifconfig #查看IP信息
配置静态IP,配置后需要重启网络 systemctl restart network
sh
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet #类型Internet
BOOTPROTO=none #IP的获取方式 none静态IP
IPADDR=192.168.10.128 #设置的静态IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.10.254 #网关
DNS1=114.114.114.114 #dns解析服务器
DNS2=8.8.8.8 #dns解析服务器
DEVICE=ens33 #网卡设备名
ONBOOT=yes #开机自启
配置动态ip
sh
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=dhcp #ip获取方式为动态获取
DEVICE=ens33
ONBOOT=yes
安装软件包的几种方式
通过源码编译安装
通过官网下载*.tar.gz文件
解压 tar -zxvf 文件
./configure 配置安装路径
make 编译
make install 安装
通过RPM安装
sh
rpm -qa |grep firefox #查询firefox,-q表示查询,-a表示所有
rpm -ivh 软件包的名称.rpm #安装rmp,需要从官网下载上传到服务器,-i表示安装 -v表示显示进度 -h表示以#显示进度
rpm -e 软件名称 #卸载软件包,后面加--nodeps 表示强制卸载
rpm -Uvh firefox-91.11.0-2.el7.centos.x86_64.rpm #软件升级
通过yum 安装
yum的主配置文件在/etc/yum.conf,yum的子配置文件的路径在/etc/yum.repos.d/ 以.repo结尾的文件
yum安装直接使用
sh
yum -y install 软件包
配置网络yum源
进入阿里云的镜像官网,找到指定的网络yum源的下载路径,https://developer.aliyun.com/mirror/
下载网络yum源配置文件到指定的/etc/yum.repos.d/ 路径下
yum clean all #清理缓存
配置本地yum源
必须配置本地yum仓库
yum的子配置文件必须是以.repo结尾的文件(/etc/yum.repos.d)
准备本地仓库
sh
mkdir /mnt/iso
mount /dev/sr0 /mnt/iso
###### 配置本地源
cat > /etc/yum.repos.d/iso.repo << EOF
[iso]
name=centos7
baseurl=file:///mnt/iso #表示从本地的/mnt/iso仓库下载
enabled=1
gpgcheck=0
EOF
#备份原有的yum子配置文件
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/CentOS-* /etc/yum.repos.d/bak/
# 清理yum源,并建立元数据缓存
yum clean all
yum makecache fast
进程管理
进程就是一个运行中的程序,每个进程的数据互不影响,一个进程可以有多个线程,多个线程共享进程的资源
进程管理命令
ps 命令查看
sh
ps -e #查看所有进程
ps -ef #输出全格式
ps -a #显示现行终端机下的所有进程
top命令动态查进程
sh
top # -p 可以查看指定pid的进程
# -c 显示命令参数
# -u 显示指定用户
top 运行中界面中,按钮
1 显示所有CPU占用情况
P 以 CPU 占用率大小的顺序排列进程列表
M 以内存占用率大小的顺序排列进程列表
n 设置在进程列表所显示进程的数量
q 退出 top
netstat命令和ss命令
两个命令一样,ss比较快
sh
netstat -r # 显示:本机路由表
netstat -tunp # 显示:网络连接,即:socket网络套接字
netstat -tunlp # 显示:侦听端口,即:socket网络套接字 -t表示tcp ; -u 表udp ; -l 表示监听端口 ;
lsof命令列出进程打开的文件
sh
lsof -u user01 #以user01用户身份运行的进程所打开的文件
lsof -i:22 #列出:指定port端口的进程信息
控制进程前台、后台运行
ctrl + z 将正在执行的任务暂停放入后台
jobs -l 查看后台任务
fg 任务编号 将任务调回前台
bg 任务编号 在后台继续运行任务
将进程放入后台运行并脱离终端
语法:
nohup 命令 &
杀死进程的方式
sh
kill -9 进程id #根据进程id杀死进程
pkill -9 httpd #根据命令名杀死进程
调整进程的优先级
sh
renice -10 1220 #renice调整优先级,-10表示优先级 1220是进程id
nice -n -15 crond #nice调整优先级 -15表示优先级 crond是进程名