Linux学习笔记


发表于 修改于 后端知识整理 3596 字 22 分钟

概述

Linux是一种自由和开放源码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布,在加上用户空间的应用程序之后,成为Linux操作系统。
Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证(GPL),任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。大多数Linux系统还包括像提供GUI的X Window之类的程序。除了一部分专家之外,大多数人都是直接使用Linux 发行版,而不是自己选择每一样组件或自行设置。

  • Linux发行版
    Linux发行版指的就是通常所说的“Linux操作系统”,发行版为许多不同的目的而制作,包括对不同电脑硬件结构的支持,对普通用户或开发者使用方式的调整,针对实时应用或嵌入式系统的开发等等。目前,超过三百个发行版被积极的开发,最普遍被使用的发行版有大约十多个。较为知名的有DebianUbuntuFedoraCentOSArch LinuxopenSUSE等。

开始

VMWare+CentOS

  • 安装VMWare
  • 下载一个CentOS Linux的映像文件
  • 安装即可

基本环境安装

jdk

  • 创建一个目录方便管理 cd /usr/ mkdir java
  • 下载jdk-linux.tar.gz
  • 想办法弄到/usr/java/目录下
  • 解压 tar -xzvf jdk-8u202-linux-x64.tar.gz
  • 编辑/etc/profile文件 vi /etc/profile
  • 追加如下内容
export JAVA_HOME=/usr/java/jdk1.8.0_202
export PATH=.:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • 使修改立即生效 source /etc/profile
  • 查看JAVA_HOME的值 echo $JAVA_HOME

tomcat

  • 移动到一个目录cd /usr/java
  • 下载apache-tomcat.tar.gz
  • 想办法弄到/usr/java/目录下
  • 解压 tar -xzvf apache-tomcat.版本号.tar.gz
  • 把解压出来的文件夹改个名字mv apache-tomcat.版本号 tomcat
  • 移动到tomcat目录 cd tomcat
  • bin/startup.sh && tail -f logs/catalina.out启动即可
  • (关闭tomcat使用bin/shutdown.sh

不小心开了多个tomcat怎么办?

  1. 使用ps -ef|grep tomcat查看tomcat是否再运行,第一个编号是该tomcat的进程pid
  2. kill掉该进程kill -9 <pid>

常用命令

基础命令

命令描述
uname –r显示内核版本
uname –m查看系统架构
halt停机
poweroff关闭电源
shutdown –h now关机
reboot重启
shutdown –r now重启
logout注销
exit退出
echo在终端显示命令行中键入的信息
clear清屏
命令描述
date +%Y%m%d显示日期
date +%H:%M显示时间
date -s "mm/dd/yyyy hh:mm:ss"修改日期时间
date +%Y%m%d --date="-1 day"得到昨天的日期
cal [month] [year]显示日历
命令描述
grep MemTotal /proc/meminfo检查内存空间
grep SwapTotal /proc/meminfo检查交换分区
free检查当前可用的内存和交换分区
df -h /usr检查磁盘共享空间
fdisk –l查看硬盘空间
cat /etc/issue软件版本与内核版本检测
rpm –qa|grep binutils检验binutils是否安装
命令描述
help显示Bash的命令列表
help <命令字>help pwd获得单独的Bash命令的帮助信息
help -s <命令字>help –s pwd只显示命令的格式信息

shell命令(内置命令)是Linux系统中使用频率最高的一类命令 。 注:Bash是Linux系统中默认使用的shell程序。

Linux系统中的大多数命令都属于非shell命令,即“外部命令”:<命令字> —help 无论是shell命令还是非shell命令,都提供手册页形式的帮助信息:man <命令字>,通过↑、↓、PgUp、PgDn、q键操作 信息页是Linux中提供的与手册页类似的另一种帮助信息的形式: info <命令字> 注意:直接输入info命令,显示info说明信息,通过↑、↓、PgUp、PgDn、q键操作

文件/目录操作

命令描述
pwd打印当前工作目录(print working directory)
ls [-l] [参数]用于显示文件或目录信息
添加-l时,每行显示一个文件和目录信息(长格式)
参数传入文件名,显示此文件信息/文件夹内容
不加-l,只显示文件名
ll等同于ls -l
cd更换目录(change directory)
上级目录:../
当前目录:./
根目录:/
mkdir <目录名>新建目录(make directory)
-p自动创建不存在的父目录
可同时创建多个目录,用空格分隔
mv <源文件名> <目录名/新文件名>目录存在时,将文件移动到该目录
在时,重命名文件
rmdir <目录名>删除空目录(remove directory)
-p自动删除父目录
可同时删除多个目录,用空格分隔
touch <文件名>新建空文件
当文件不存在时,创建大小为0的空文件
存在时,则只更新该文件的时间属性
rm <文件名>删除文件
-r 可删除非空目录(recurse)
-f 删除时不提示(force)
-rf 强制删除
可同时删除多个文件,用空格分隔
find <path> -name <file>在指定目录下查找指定文件
文件名中可用*?通配符
* 表示0到多个字符
?表示一个字符
file <文件名>文件类型查看
Linux中无文件扩展名,无法知其文件类型,所以常用此命令
cp <文件名> <目标目录>复制文件
-r 可将原目录及其子目录复制到目标目录
可同时复制多个文件,用空格分隔

包安装/依赖管理

一般来说著名的 Linux 系统基本上分两大类:

  • RedHat 系列:Redhat、Centos、Fedora 等
  • Debian 系列:Debian、Ubuntu 等
命令描述
yum install 软件名称 -y安装(-y表示询问y/n时全部选择y)
yum remove 软件名称 -y卸载

yum与apt的区别

压缩解压

常用命令描述
tar -xzvf 文件名.tar.gz解压tar.gz
tar -xvf 文件名.tar解压tar
tar -xjvf 文件名.tar.bz2解压tar.bz2
tar -xZvf 文件名.tar.Z解压tar.Z
unrar e 文件名.rar解压rar,需要先下载rar for linux
unzip 文件名.zip解压zip,需要先下载rar for linux
常用命令描述
tar -cvf jpg.tar *.jpg将目录里所有jpg文件打包成jpg.tar
tar -czf jpg.tar.gz *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpgrar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpgzip格式的压缩,需要先下载zip for linux
  • 独立命令 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个

  • 可选命令 -z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出

  • 下面的参数-f是必须的 -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

Linux下的tar压缩解压缩命令详解

用户管理

命令描述
useradd <用户名>添加用户
passwd <用户名>修改用户密码
su <用户名>切换到一个用户
usermod [-L|-U] <用户名>-L 锁住(lock)
-U 解锁(unlock)
userdel [-r] <用户名>删除用户
whoamiwho am i查看当前用户
who查看所有已登录用户
last查看所有登录用户记录
命令描述
groupadd <用户组名>添加用户组
useradd -g <用户组名> <用户名>创建用户时指定用户初始组
usermod -g <用户组名> <用户名>修改用户所在组
groups <用户名>查看用户所属组
groupdel <用户组名>删除用户组
命令描述
write <user>向指定用户发送信息(ctrl+d结束编辑)
wall '<info>'向所有用户发送信息
mesg <n/y>拒绝或接收发送的信息(对于root管理员无效)
-路径
用户信息文件/etc/passwd
用户密码文件/etc/shadow
用户组信息文件/etc/group

文件权限

文件信息表示

ll <文件名> 查看文件权限 得出如下信息

-rw-r--r-- 1 root root 0 Jul 22 16:04 testfile
-rw-r--r-- 1 root root 0 Jul 22 16:04 testfile
- rw- r-- r-- 属主 属组 更新时间 文件名
文件类型 属主权限 属组权限 其他用户权限
注:文件所有者=属主 文件所属组=属组

权限数字表示

权限 执行
(--x)

(-w-)
执行+写
(-wx)

(r--)
读+执行
(r-x)
读+写
(rw-)
读+写+执行
(rwx)
数字 1 2 3(2+1) 4 5(4+1) 6(4+2) 7(4+2+1)

文件权限的设置

命令描述
chmod [ugoa][+-=][rwx] <文件>更改文件权限 例如chmod u+w testfile
ugoa分别表示User、Group、Other、All
chown <用户名> <文件>更改文件所有者:加 -R 是修改子目录
chgrp <组名> <文件>更改文件所属组
chown <用户名:组名> <文件>同时更改所有者和所属组

chmod的扩展使用

  • 我们可以简写中间的部分为三个数字,分别表示User、Group、Other的权限 chmod a=rwx 文件chmod 777 文件效果相同 chmod ug=rw,o=r 文件chmod 664 文件效果相同
  • 若用 chmod 4755 文件 可使此程式具有root的权限,这个4表示其他用户执行文件时,具有与所有者相当的权限。 例如:root用户创建了一个上网认证程序netlogin,如果其他用户要上网也要用到这个程序,那就需要root用户运行chmod 755 netlogin命令使其他用户也能运行netlogin。 但是netlogin执行时可能需要访问一些只有root用户才有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网。 这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。

防火墙相关

命令描述
systemctl status firewalld查看防火墙的状态
systemctl [start/stop/restart] firewalld开启/关闭/重启
service firewalld [start/stop/restart]开启/关闭/重启
firewall-cmd --zone=public --add-port=6379/tcp --permanent开放指定端口,记得重启防火墙
命令含义:
–zone 作用域
–add-port=6379/tcp 添加端口,格式为:端口/通讯协议
–permanent 永久生效(没有此参数重启后失效)
netstat -ntlp查看当前运行的所有tcp端口
netstat -ntulp |grep 6379查看所有1935端口使用情况

文本查看与编辑

查看

命令描述
cat <文件名>查看全部
more <文件名>分屏查看:h(帮助)space(下翻屏)b(上翻屏)enter(下一行)q(退出)
less <文件名>分屏查看:e(下一行)y(上一行)f(下翻页)b(上翻页)q(退出)
head -5查看文件前5行
tail -5查看文件后5行
tail -f 文件实时查看文件

vi操作

vi模式切换

graph TB
Linux --"vi <文件名>【进入】"-->命令模式
命令模式 --"ZZ【退出】"--> Linux
命令模式 --"i/I【插入】<br>a/A【追加】<br>o/O【打开】<br>r/R【替换】"--> 输入模式
命令模式 --":【转义命令】"--> 末行模式
输入模式--"Esc【返回】"-->命令模式
末行模式--"Esc【返回】<br>:w【保存不退出】<br>:w &lt;文件名&gt;【另存为】"-->命令模式
末行模式--":wq【保存并退出】<br>:q【不保存退出,有提示】<br>:q!【不保存,强制退出】"-->Linux

基本操作

操作描述
h ← k ↑ j ↓ l →光标方向移动
ctrl+b 前一页 ctrl+u 前半页
ctrl+f 后一页 ctrl+d 后半页
翻页操作
^ home行首
$ end行尾
w 后一个单词首字母
b 前一个单词首字母
e 后一个单词尾字母
行内快速跳转
【末行模式】:set [nu/nonu]显示/隐藏行号
gg首行
5gg第5行
G尾行
5G第5行
行数跳转
操作描述
x 删除后一个字符
X 删除前一个字符
dd 删除光标所在行
3dd 3D 删除光标所在行+后2行
dw 删除光标至词首
de 删除光标至词尾
d$ 删除光标至行尾
d^ 删除光标至行首
删除操作
u撤销操作
yy复制光标所在行
yw复制光标所在单词
y$复制光标至行尾
y^复制光标至行首
3yy复制光标所在行+后2行
[行号],[行数] yy从某行开始+后[行数-1]行
yG复制光标至文尾
y1G复制光标至文首
复制操作
p粘贴在光标所在行之后
P粘贴在光标所在行之前
3p向后粘贴3次
3P向前粘贴3次
粘贴操作

【末行模式】 查找:
由”/”或者”?”开始后跟一个word
按n键查找后一个 按N键查找前一个 替换: set fileencoding=utf8

,n s/old/new/gc m,n表示从第几行到第几执行替换

操作描述
vi 文件1 文件2创建/打开多个文件
【末行模式】:args查看当前文件
【末行模式】:first第一个文件
【末行模式】:prev上一个文件
【末行模式】:next下一个文件
【末行模式】:last最后一个文件

评论