一级目录 | 功能(作用) |
---|---|
/bin/ | 存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行 |
/boot/ | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
/dev/ | 设备文件保存位置 |
/etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等 |
/home/ | 普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming |
/lib/ | 系统调用的函数库保存位置 |
/media/ | 挂载目录。系统建议用来挂载媒体设备,如软盘和光盘 |
/mnt/ | 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区 |
/misc/ | 挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的 |
/opt/ | 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件 |
/root/ | root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在 “/” 下 |
/sbin/ | 保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看 |
/srv/ | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据 |
/tmp/ | 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空 |
/usr
usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。
Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录类似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。
子目录 | 功能(作用) |
---|---|
/usr/bin/ | 存放系统命令,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行 |
/usr/sbin/ | 存放根文件系统不必要的系统管理命令,如多数服务程序,只有 root 可以使用。 |
/usr/lib/ | 应用程序调用的函数库保存位置 |
/usr/XllR6/ | 图形界面系统保存位置 |
/usr/local/ | 手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置 |
/usr/share/ | 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录 |
/usr/src/ | 源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过笔者更习惯把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/linux/ 目录中 |
/usr/include | C/C++ 等编程语言头文件的放置目录 |
/var
/var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如表 所示的这些子目录。
/var 子目录 | 功能(作用) |
---|---|
/var/lib/ | 程序运行中需要调用或改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/ 目录中 |
/var/log/ | 登陆文件放置的目录,其中所包含比较重要的文件如 /var/log/messages, /var/log/wtmp 等。 |
/var/run/ | 一些服务和程序运行后,它们的 PID(进程 ID)保存位置 |
/var/spool/ | 里面主要都是一些临时存放,随时会被用户所调用的数据,例如 /var/spool/mail/ 存放新收到的邮件,/var/spool/cron/ 存放系统定时任务。 |
/var/www/ | RPM 包安装的 Apache 的网页主目录 |
/var/nis 和 /var/yp | NIS 服务机制所使用的目录,nis 主要记录所有网络中每一个 client 的连接信息;yp 是 linux 的 nis 服务的日志文件存放的目录 |
/var/tmp | 一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除 |
# 在shell中, 按 ctrl+s 会锁定不能输入指令, 按 ctrl+q 解除
# 查看Linux系统版本
$ cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
# 帮助命令, d_向下翻页, u_向上翻页, q_退出, /_查找
$ man ls
# 或
$ ls --help
# 关机, 时间: now_现在, hh:mm_具体几点几分
$ shutdown -h [时间]
$ poweroff
# 重启
$ reboot
# 或者
$ shutdown -r [时间]
# 时区设置
$ sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
$ sudo echo "Asia/Shanghai" > /etc/timezone
# 如果没有权限更改目录放置
$ sudo echo "Asia/Shanghai" > /home/dyyy/yesoft/timezone
# 显示当前耗时的进行的信息
$ top
# 查看系统进程状态
$ netstat -nltp
# 解除端口占用或结束进程
$ fuser -v -n tcp 8080 # 1. 查看占用端口的进程, PID
$ kill -s 9 1154 # 2. 结束进程, 这里1154 是 PID值
# 查看cpu信息
$ lscpu
$ cat /proc/cpuinfo
# 查看内存占用
$ free -h
$ cat /proc/meminfo
# 清理内存缓存
$ sync
$ echo 1 > /proc/sys/vm/drop_caches
$ echo 2 > /proc/sys/vm/drop_caches
$ echo 3 > /proc/sys/vm/drop_caches
# 查看硬盘使用情况
$ df -h
# 硬盘信息
$ lsblk -f # -f参数会额外显示硬盘的格式, 没加的话会显示硬盘容量
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 vfat F862-4F9D /boot/efi
├─sda2 xfs 6af855b9-85f7-4207-80f9-3f21503f6046 /boot
└─sda3 LVM2_member l0enHL-vm9r-BeRE-hhiU-TKym-isVS-7nQ15R
├─centos-root xfs eb31658f-b69d-4868-9590-b6f364a277cf /
├─centos-swap swap 64c9d353-77df-4894-95df-2fb2eb35ceb3 [SWAP]
└─centos-home xfs 547d1d25-f47d-4825-9f31-a781ab490d0b /home
$ fdisk -l
# 开机自启动
$ vim /etc/rc.d/rc.local
# ------------------ 文本开始 ------------------
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local &
# 设置虚拟内存区域的数量
sysctl -w vm.max_map_count=262144
# 启动Nginx
/usr/sbin/nginx
# 启动 Nexus
/usr/local/smart_ward/application/sonatype/nexus-3.24.0-02/bin/nexus start
# 启动禅道
/opt/zbox/zbox start
# 启动 Jenkins
systemctl restart jenkins
# ------------------ 文本结束 ------------------
# 查看系统时间
$ date
# 修改系统时间
$ date -s "20200902 17:31:20"
# 查看日历
$ cal
一月 2021
日 一 二 三 四 五 六
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
# 用户相关
$ useradd 用户名 # 创建用户
$ userdel -r 用户名 # 删除用户, -r 是把用户主目录也一起删除
$ usermod -d /home/新用户名 -m -l 新用户名 用户名 # 修改用户
# 给用户增加 sudo 权限, 编辑 /etc/sudoers 文件, 在 root 用户那行下面加用户权限, 如 dyyy 用户
$ vim /etc/sudoers
# ------------------ 文本开始 ------------------
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
dyyy ALL=(ALL) NOPASSWD:ALL
# ------------------ 文本结束 ------------------
# 拿到root密码后把用户加入sudo
$ sudo vim /etc/sudoers
dyyy ALL=(ALL) NOPASSWD:ALL
# 切换用户
$ su - # -表示切换到root用户
$ su dyyy # 切换到 dyyy 用户
# 查看当前用户
$ whoami # who am i
# 修改密码
$ passwd # 修改当前账号的密码
$ passwd dyyy # 后面带用户名的修改方式只能是root用户, 修改特定的用户密码
# 用户组
$ groupadd -g 102 group1 # 创建新组, -g 102 是组标识号, 可以不加
$ groupdel group1 # 删除组
$ groupmod -g 102 -n group2 group1 # 修改组标识号, 修改组名为 group2
# 定时任务
$ crontab -e # 编辑定时任务
# ------------------ 文本开始 ------------------
# 分 时 日 月 周 要执行的命令
0 */2 * * * ./cleanCache.sh
# ------------------ 文本结束 ------------------
# 设置 crond 启动以及开机自启
$ systemctl start crond.service
$ systemctl enable crond.service
# 切换目录
$ cd - # 返回上一次访问的目录
$ cd ~ # 返回当前用户的主目录
# 创建软连接
$ ln -s 源文件 目标文件
# 复制功能
$ cp -r 源文件 目标文件 # 递归复制文件夹
$ cp -d 软连接 目标文件 # 复制软连接及里面的文件
# 文件查找
$ find / -size +800M # 查找超过800M的文件
$ find . -type f -size +800M
# 文件权限具体看: https://www.runoob.com/linux/linux-file-attr-permission.html
# 这里只是摘录部分容易遗忘的东西
# 权限有三种: r(读), w(写), x(可执行)
# 三种身份: u(用户), g(同组用户), o(其他人), a(all, 代表前面三种)
# 三种操作: +(增加权限), -(删除权限), =(设定权限)
$ chmod a+x abc.txt # 所有身份增加可执行权限
# 修改所有者
$ chown dyyy:dyyy abc.txt # 将文件的所有者和组修改为 dyyy和dyyy
# 创建文件
$ touch abc.txt # 创建一个空文件
$ echo "test" > xyz.txt # 覆盖模式, 将 test 写入并覆盖 xyz.txt 文件, 如果文件不存在则创建
$ echo "test" >> xyz.txt # 追加模式, 将文本追加在最后
# wc(word count):统计文本字数行数
$ wc aa.txt
154 233 3418
# 154 :行数, 233 :单词数, 3418 :字符数
# 查看文件内容
$ cat xyz.txt # 将文件内容输出在屏幕上
$ vim xyz.txt # 打开文件查看
$ tail -f xyz.txt # 监听并更新显示文件最后部分的内容, 适用于日志实时打印
$ tail -f -n 8 xyz.txt # 默认打印10行, 如果打印8行则中间加 -n 8
$ tail -f xyz.txt | grep "关键词" # 可以过滤出想输出的日志
vi/vim:
# 如果使用 vim 的时候提示找不到该命令, 需要先安装 vim
$ yum install vim
# 定位到第一行第一个字符
gg
# 定位到最后一行第一个字符
G
# 翻页
ctrl+f # 下翻一屏
ctrl+b # 上翻一屏
ctrl+d # 下翻半屏
ctrl+u # 上翻半屏
ctrl+e # 向下滚动一行
ctrl+y # 向上滚动一行
n% # 到文件 n% 的位置
zz # 将当前行移动到屏幕中央
zt # 将当前行移动到屏幕顶端
zb # 将当前行移动到屏幕底端
# 移动行
:7,10 move 20 # 将7到10行的内容移动到第20行的位置
:1 move 2 # 将第一行移动到第二行
# 显示行号
:set nu
# 复制
yy # 复制当前行
10yy # 复制光标所在行及下面的10行
# 粘贴
p
# 删除行
dd # 删除当前行
5dd # 删除5行
# 文本插入
I # 第一个字符前
i # 光标前插入
a # 光标后插入
A # 最后一个字符后
o # 在下方新插入一行
O # 在上方新插入一行
# 撤销
u
# 查找单词
/查找的字符
n # 查找下一个匹配的字符
N # 查找上一个
# 取消高亮
:noh
# 重新加载当前文档
:e
:e! # 重载并丢弃已修改的
# 切换文件, ctrl + ^ 进行切换
:e filename
:e! filename # 放弃对当前文件的修改,编辑新的文件
# 查看剪切板
:reg
--- 寄存器 ---
"" m
"0 [2021-01-06 04:52:23.996] [DiscoveryClient-InstanceInfoReplicator-0] WARN o.s.b.a.amqp.RabbitHealthIndicator - Rabbit health check failed^J
"1 echo "${war_path}$project-dyyy.war"^J
"2 ########## 命令开始 ##########^J
"3 for project in projects^J
"4 fi^Jdone^J
"5 do^J if [ ! -f path ]^J then^J
"6 echo "${prefix}项目路径检查完成!"^J
"7 ^Jecho "${prefix}正在判断项目路径是否存在..."^Jfor ^J
"8 }^J
"9 ^I}^J
"- m
": reg
"% manager.2021-01-04.log
"/ bin
# 如果要粘贴 "1 号的剪切板内容, 如下输入
"1p
# 保存
:w
# 保存并退出
:x
:wq
# 强制退出
:q!
# 打包&压缩文件:
$ tar -czvf 打包压缩后的文件.tar.gz a.c #压缩 a.c文件为test.tar.gz
# 解压&解打包文件
$ tar -xzvf test.tar.gz
# 列出压缩文件内容
$ tar -tzvf test.tar.gz
-rw-r--r-- root/root 0 2010-05-24 16:51:59 a.c
$ zip -q -r 压缩后的文件.zip 要压缩的文件的路径
$ unzip [-o: 覆盖已存在的文件] [-d /指定的路径] 压缩文件
# 查看网卡配置信息
$ ifconfig
$ ip addr
# 启用网络, 修改文件, p8p1 这个是网卡的名字
$ vim /etc/sysconfig/network-scripts/ifcfg-p8p1
# ------------------ 文本开始 ------------------
ONBOOT=yes # 原本是 no, 要开启
# 下面是修改固定IP
IPADDR=192.120.120.120
GATEWAY=192.120.120.254
NETMASK=255.255.255.0
DNS1=192.120.120.254
# ------------------ 文本结束 ------------------
$ service network restart # 重启网络服务
# 防火墙
$ firewall-cmd --state # 查看防火墙
$ systemctl stop firewalld.service # 停止
$ systemctl start firewalld.service # 启用
$ systemctl disable firewalld.service # 禁用
# 开放端口
$ sudo firewall-cmd --list-all
$ sudo firewall-cmd --add-port=8888/tcp --permanent
$ sudo firewall-cmd --add-port=6371-6379/tcp --permanent
$ sudo firewall-cmd --reload
$ ping IP地址 # 测试网络是否连通
# 下载文件, 网页
$ wget -r [-P 指定的目录] http://localhost:8080/
没有的话先安装
yum install screen
# 1. 新建screen
$ screen -S 名字
# 2. 进入screen
$ screen -r 12430
# 3. 退出但程序还在
ctrl + A + D
# 4. 直接退出, 程序停止
$ exit
# 5. 删除 screen
$ screen -X -S 12430 quit