Linux常用指令学习笔记

文章目录

      • 文件目录结构
        • 根目录(/)
        • `/usr`
        • `/var `
      • 系统命令
      • 文件目录管理
      • 文本编辑
      • 解压缩
        • tar
        • zip
        • rpm
      • 网络连接
      • screen

文件目录结构

根目录(/)
一级目录 功能(作用)
/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
# 打包&压缩文件: 
$ 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
$ zip -q -r 压缩后的文件.zip 要压缩的文件的路径
$ unzip [-o: 覆盖已存在的文件] [-d /指定的路径] 压缩文件
rpm

网络连接

# 查看网卡配置信息
$ 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/

screen

没有的话先安装 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

你可能感兴趣的:(Linux,linux)