01Linux基础

附件:day26--linux入门.pdf

Linux是 基于Unix 的开源免费的操作系统,由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境。 (程序基本上在Linux上发布

Linux系统的应用非常广泛,不仅可以长时间的运行我们编写的程序代码,还可以安装在各种计算机硬件设备中,比如手机(苹果就是基于Linux, Android 最底层是Linux)、平板电脑、路由器等。

Linux基础

unix:

unix是一个 多用户,多任务 的操作系统 ,收费 的操作系统.(当时比Windows更小,更安全(win也收钱))

linux:

  • Linux根据 市场需求(谁用) 不同,两个方向:
    • 图形化界面版 :注重用户体验,类似window操作系统,但目前成熟度不够 ;
    • 服务器版 :没有好看的界面,是以在控制台窗口中输入命令操作系统的,类似 于DOS,是我们架设服务器的最佳选择(性能高一点);
  • Linux根据 原生程度 ,又分为两种:
    • 内核版本 :是指在Linus领导下的内核小组开发维护的系统内核的版本号 ;(免费)
    • 发行版本 :是一些组织和公司根据自己发行版的不同而自定的 (类似盗版,不一定免费);
      (windows也有发行版了,但是不合法)
  • Linux 发行版本 不同,又可以分为n多种:

其中:

  • ubuntu:图形界面好一点(基本没用的);
  • centos :开源的免费的os( 服务器版用的多, 开源 :安全,常用)
  • redhat:
  • 中标麒麟:
  • 红旗Linux:收费(倒闭了)

安装Linux

安装虚拟机

  • 虚拟机: 就是一台电脑
    通过虚拟机软件可以在自己的电脑再安装几个电脑
  • 常见的虚拟机软件:
    • VmWare :(威睿公司)功能强大,收费产品
    • virtualBox : oracle公司( 免费的, 有的电脑不能用)
  • Linux 系统的应用:
    • 服务器系统:Web 应用服务器、数据库服务器、 接口服务器、 DNS 、 FTP 等等;
    • 嵌入式系统:路由器、防火墙、手机、 PDA 、 IP 分享器、交换器、家电用品的微电脑控制器等等,
    • 高性能运算、计算密集型应用:Linux 有强大的运算能力。
    • 桌面应用系统
    • 移动手持系统

linux的目录结构

  • bin :存放二进制可执行文件(mv,cp等命令文件);
  • sbin :存放二进制可执行文件,只有root才能访问;
  • etc :存放系统配置文件 ;( 在etc下有profile文件时配置环境变量
  • usr (可以放软件,一般放到local文件夹中) :用于存放共享的系统资源;( 存放共享的系统资源,一般都把软件/文件放到usr中
  • home :存放用户的根目录:
    • 每个用户的根目录的存放位置;,在home下创建每个用户的根目录
    • 例如:一个用户tom,在home就会存在tom目录;
  • sbin:超级用户,管理员管理程序
  • root :超级用户目录;(root的home)
  • dev :用于存放设备文件;
  • lib :存放跟文件系统中的程序运行所需要的动态连接共享库及内核模块(类似Windows的DLL文件,几乎所有的应用程序都需要用这些共享库);
  • mnt :系统管理员安装临时问价系统的安装点;系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。
  • boot :存放用于系统引导时使用的各种文件;
  • tmp :用于存放各种临时文件;
  • var :用于存放运行时需要改变数据的文件;
  • opt: 一般放安装包
  • lost+found:一般是空的,系统非法关机之后,存放文件
  • boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
  • 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件- -- proc:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。
  • srv:service缩写,该目录存放一些服务启动之后需要提取的数据。
  • sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统
  • media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
  • selinux:SELinux是一种安全子系统,它能控制程序只能访问特定文件(类似360)。

linux的命令

基础命令

登录:
  • login 后输入root,回车 123456(密码,不会显示)

登录成功

,这里的~就代表root

查看帮助:
  • man 命令 : 进入命令 比如man cd
  • 空格: 翻页
  • 退出帮助目录 : q
  • 清空屏幕Ctrl+l 或输入clear

目录操作命令

显示所在目录:

pwd :显示所在文件层次

切换目录:cd
  • cd 目录 :进入文件夹
  • cd 目录/目录 :进入 多层 文件夹
  • cd /目录 :进入根目录下的目录中
  • cd .. (或 cd ../) :上一级目录(有空格)
  • cd / :根目录
  • cd ./ :当前目录;
  • cd ~ :回家(回到home中用户目录(root用户会进入root))
    默认在root目录中,先 cd / 到根目录,再进其他目录
  • cd - :相当于返回键(返回上一个目录)
创建目录
  • mkdir 创建
  • mkdir 目录名 :创建一层
    mkdir /test/ss 在根目录/test目录下创建ss目录(/test目录必须之前存在)
  • mkdir -p a/b/c :创建多层目录 a/b/c (用-p)
删除目录

rmdir 删除

  • rmdir 目录名 :只能删除 一个空目录(只能删除一级 ,必须是空的
  • rm 目录 : 只能删除 一个空目录
  • rm -r 目录 :删除目录(同时删除子文件,每删除一个文件都要询问)
  • rm -rf 目录 : 删除目录(** 强制删除 **,不询问)

示例:删除/usr下的newTest,进入/usr下使用rm -r newTest

示例:删除/test下的newTest而不需要询问强制删除,在/test下使用rm -rf newTest

注意:rm不仅可以删除目录,也可以删除其他文件或压缩包

展示目录下文件列表 (以后使用 ll 即可)
  • ls:展示的能看见的 文件(和目录)的名称
  • ls -a: 展示 所有 的文件的名称
    文件前面有 "." 代表的是 隐藏 文件
  • ls -l: 显示文件的 详细信息
    简写的方式 : **ll**(效果与ls -l一致)
  • 开头类型: -代表文件,d代表目录(文件夹)
  • 9位 :权限
  • 4002等数字:文件大小
  • 最后:文件名称
  • ll -h : 友好的显示

大小显示为k;

浏览文件(查看具体内容)
  • cat:显示文件的所有内容
    cat 文件名 (按tab自动补全文件名)
    缺点: 内容太长时,只显示最后的内容
  • more: 分页显示
    空格 : 下一页
    回车 :下一行
    q:退出查看
    缺点: 翻页后不能看前方内容
  • less: 分页显示
    可以通过PgUp PgDn 翻页查看
    按q退出
  • **tail**
    查看一个文件的后面的内容
    • tail -显示后面n行 文件名
    • tail -f 文件名 : 动态的查看
      例如:
shell 复制代码
tail -f catalina.xxx.log
  • Ctrl+c: 退出查看;
查找目录
  • find 目录 参数
    示例:查找/root下的与test相关的目录(文件) find /root -name '*test*'
    *代表模糊查找
修改目录的名称

mv 目录名称 新目录名称

示例:

shell 复制代码
test目录下有一个oldTest目录,改名为newTest
mv oldTest newTest

注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作

移动目录的位置---剪切

mv 目录名称 目录的新位置

示例:

shell 复制代码
在test下将newTest目录剪切到 /usr下面,
mv newTest /usr
拷贝目录

cp -r 目录名称 目录拷贝的目标位置 -----r代表递归拷贝 (子文件同时拷贝)

示例:

shell 复制代码
将/usr下的newTest拷贝到根目录下的test中,
cp -r /usr/newTest /test

注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等, 拷贝文件和压缩包时不 用写-r递归

文件的操作

创建 一个文件
  • touch 文件名:创建一个空白的文件

示例:

shell 复制代码
在 test目录下创建一个空文件
touch aaa.txt
复制 文件
  • cp 源文件 目录/新文件名

例如:

shell 复制代码
cp 1.txt 2.txt   #在同一个文件夹下,复制,名字 2.txt
cp 1.txt 1/1.txt    # 复制到下一级文件夹1中, 名字1 .txt
移动 文件(重命名)mv
  • mv 文件 目录/新文件名
  • mv 文件名 新文件名
删除 文件 rm
  • rm 文件名 : 带询问删除 文件
  • rm -f 文件名: 不带询问删除 ----直接删除;
  • **rm -r 目录 **: 带询问的递归删除:删除 文件夹
  • ** rm -rf 目录**: 不带询问的递归删除(谨慎使用)
  • ** rm -rf** * : 删除所有目录;
  • **rm -rf /_ _ : 自杀(不要用);
查看文件内容 :
  • cat 文件: 只能显示 最后一屏 内容

    -more 文件 : 可以显示 百分比回车 可以向下一行,** 空格**可以向下一页,q可以退出查看

  • less 文件: 查看/etc/sudo.conf文件,可以使用 键盘上的PgUp和PgDn向上和向下翻页 , q结束查看

  • tail -数字n 文件: 查看文件后n行, Ctrl+C结束

shell 复制代码
tail -10 sudo.conf   # 查看/etc/sudo.conf文件的 后10行 ,
tail -f catalina-2016-11-11.log #监控文件的变化    动态变化

注意:命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件, 会随着程序的运行,日志会变化

修改文件的内容vim,vi

vim 文件

示例:编辑/test下的aaa.txt文件,使用vim aaa.txt

点击键盘 i/a/o(一般用i) 进入编辑模式,可以 编辑文件

  • i:插入模式 :在后方插入
  • 退出编辑 模式:按下 Esc ,退回命令模式;
  • ** 保存** ::wq保存并退出;
  • 退出,不保存 : :q!
打包/解压(文件/目录)tar
  • tar 参数 文件名(打包之后显示文件名) 要打包|解压的文件目录

常用的组合

  • - cvf :打包一个文件或者目录(不压缩)
  • - zcvf: 打包并压缩一个文件或者目录 压缩的格式:gzip,或 .tar.gz
  • - xvf: 解压或者打开一个tar文件: tar -xvf xxx.tar.gz
  • -c:创建一个新tar文件
  • -v:显示运行过程的信息
  • -f:指定文件名
  • -z:调用gzip压缩命令进行压缩
  • -t:查看压缩文件的内容
  • -x:解开tar文件

例如:

  • 打包:
shell 复制代码
tar -cvf test1.tar ./*   #将当前目录下的 所有文件 打包成 test 1.tar:
tar -zcvf test2.tar.gz ./*   #将当前目录下的所有文件打包并压缩成test2.tar.gz:
  • 解压:
shell 复制代码
tar -xvf test1.tar  # 将test1.tar解压到当前目录
tar -xvf test1.tar -C b  # 将test1.tar解压到b目录

其他的常用命令

搜索: grep :查找文件内部字符串;

查找符合条件的字符串(★),显示这一行内容,类似ctrl+f

  • grep 字符串 文件 :从文件中搜索字符串
  • grep 字符串 文件 -- color :从文件中搜索字符串,并高亮显示
  • grep 字符串 文件 -- color --B2 : 高亮显示本行和上两行
  • grep 字符串 文件 -- color --A2 :高亮显示本行和下两行

示例 :

shell 复制代码
grep lang anaconda-ks.cfg  在文件中 查找 lang
grep lang anaconda-ks.cfg -- color 高亮 显示(两道-)
grep lang anaconda-ks.cfg --color -- A2   高亮 显示3行(本行和下两行)
grep lang anaconda-ks.cfg --color --B2 (三行,本行和前两行)
pwd : 显示 当前的工作目录
wget:下载 资料

wget 资源路径

wget http://nginx.org/download/nginx-1.9.12.tar.gz

&& 命令执行控制:
  • 命令之间使用&& 连接,实现逻辑与的功能。
  • 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
  • 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

示例:

shell 复制代码
mkdir test && cd test   创建目录test,进入目录test;
查看进程:ps -ef
  • ps -ef: 查看 当前系统中运行的进程
  • ps --ef | grep ssh:查找某一进程
杀死进程 kill
  • kill pid:杀掉某一进程
  • kill -9 进程pid:杀死进程,强制杀死进程
清屏 clean或 ctrl+l
网络管理
  • ifconfig :查看所有的网络设置,查看IP地址;
  • ifconfig 网卡名称 down : 禁用网卡
  • ifconfig 网卡名称 up : 启用网卡
  • ping :和window中一样,查看网络是够通畅;

会一直连接着,要 通过 ctrl+c 取消

  • netstat 查看网络 端口 。 netstat -an
  • netstat -an | grep 3306 查询3306端口占用情况
网卡配置:

查看网卡配置:cat /etc/sysconfig/network-scripts/ifcfg-etho

若是网卡不能用,可以手动配置------将红色部分写入这个文件中

管道 |

作用是 将一个命令的输出用作另一个命令的输入;
运行命令1,结果用命令2使用

例如:
ifconfig | grep 192.168 在ifconfig的结果里查找 192.168字符串

常用:

  • ps -ef | grep java 查找和java相关的 进程
  • ps -ef | grep 3306 查找和3306相关的信息

其中:ps -ef 查找现在进程

系统管理命令

命令 描述
date 显示当前系统时间
date -s "2014-01-01 10:10:10" 设置系统时间
命令 描述
df 显示 磁盘 信息
df --h 友好显示大小
命令 描述
free 显示 内存 状态
free --m 以mb单位显示内存
命令 描述
top 显示管理执行中的程序,类似任务管理器;动态改变;
命令 描述
du 显示目录或文件的大小
du --h 显示当前目录的大小
命令 描述
who 显示目前登入系统的用户信息
命令 描述
hostname 查看当前主机名 (我定义的jsy)
修改主机名 (1)vi /etc/sysconfig/network
(2)修改其中的HOSTNAME就行;(需要重启起作用)
命令 描述
uname 显示系统信息。(显示 Linux )
uname -a 显示本机详细信息。 依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称

vi和vim编辑器

  • 编辑普通文件
  • 在Linux下一般使用vi编辑器来编辑文件。 vi既可以查看文件也可以编辑文件。
  • vim是vi的升级版,** 关键字高亮** ;

vi概述:

  1. 三种模式命令行、插入、底行模式
  2. 进入文件 :vi 文件名
  3. 模式切换
  • 切换到 命令行 模式:按 Esc 键;
  • 切换到 插入(b编辑) 模式:按 i 、o、a 键;
    • i:在当前位置前插入
    • I:在当前 行 首插入
    • a:在当前位置后插入
    • A:在当前 行 尾插入
    • o:在当前 行 之后插入一行
    • O:在当前 行 之前插入一行
  • 切换到 底行 模式:按:(冒号)
  1. 退出
  • 退出esc:q
  • 保存并退出esc:wq
  • 不保存退出esc:q!
  1. 删除dd -- 快速删除一行;
  2. 替换R -- 替换;

重定向输出>>>

重定向: 改变输出方式;把本来显示到控制台的内容,写入到文档中,查看文档可见;

  • > 重定向输出, 覆盖 原有内容;
  • >>重定向输出, **追加 **功能;

示例:

shell 复制代码
cat /etc/passwd > a.txt  将输出定向到a.txt中
cat /etc/passwd >> a.txt  输出并且追加
ifconfig > ifconfig.txt     ifconfig  查询的内容保存到 ifconfig.txt中,覆盖原有内容,用 cat  ifconfig.txt 可以看到内容;

若是需要管理权限的输出

shell 复制代码
sudo sh -c 'echo "hello world" > /opt/1.log'

Linux的用户和组

用户管理:

添加
  • 用户:
    • useradd 用户名:默认会在 home 目录下给一个用户创建一个目录
    • useradd 用户名 -d /home/目录: 创建一个用户然后在指定该用户的 家 目录(要在home下)
  • 密码:
    passwd 用户名 : 回车输入密码(要确认密码)
删除
  • userdel 用户名 :只是删除用户 但是不删除家home目录
  • userdel -r 用户名 :删除用户连带家目录一起删除
切换用户:
  • 方法1:ssh -l 用户名 -p 22 主机(IP)

例如: ssh -l tom -p 22 192.168.17.131 再也yes,输入密码;

  • 方法2:su - 用户名(不需要输密码)
  • 退出 ,返回到root用户: exit

组管理

当在创建一个新用户user时,若没有指定他所属于的组,就建立一个和该用户同名的私有组;

添加,创建组
  • groupadd 组名
  • useradd 用户名 -g 组名:创建用户指定组
删除
  • groupdel 组名:若组下有用户,删除不了

id:查询当前用户的组信息;

查看一个用户的UID和GID

  • id
  • id 用户名
  • id [选项]... [用户名]

su 切换用户

用法:su [选项]... [-] [用户 [参数]... ]

示例:

su - u1 切换到u1用户,并且将环境也切换到u1用户的环境(推荐使用)
su 切换到root用户

文件

账户文件
  • /etc/passwd 用户文件
  • /etc/shadow 密码文件
  • /etc/group 组信息文件
用户文件

root:x:0:0:root:/root:/bin/bash

  • 账号名称: 在系统中是唯一的
  • 用户密码: 此字段存放加密口令
  • 用户标识码(User ID): 系统内部用它来标示用户
  • 组标识码(Group ID): 系统内部用它来标识用户属性
  • 用户相关信息: 例如用户全名等
  • 用户目录: 用户登录系统后所进入的目录
  • 用户环境: 用户工作的环境
密码文件

shadow文件中每条记录用冒号间隔的9个字段组成.

  • 用户名:用户登录到系统时使用的名字,而且是惟一的
  • 口令: 存放加密的口令
  • 最后一次修改时间: 标识从某一时刻起到用户最后一次修改时间
  • 最大时间间隔: 口令保持有效的最大天数,即多少天后必须修改口令
  • 最小时间间隔: 再次修改口令之间的最小天数
  • 警告时间:从系统开始警告到口令正式失效的天数
  • 不活动时间: 口令过期少天后,该账号被禁用
  • 失效时间:指示口令失效的绝对天数(从1970年1月1日开始计算)
  • 标志:未使用
组 文件

root:x:0:

  • 组名:用户所属组
  • 组口令:一般不用
  • GID:组ID
  • 用户列表:属于该组的所有用户

Linux的权限命令

权限是 Linux中的重要概念,每个文件/目录等都具有权限,通过ls -l命令我们可以 查看某个目录下的文件或目录的权限

示例:在随意某个目录下 ls -lll

第一列的内容的信息解释如下: 文件的权限:

Linux三种文件类型

  • d :代表目录
  • - :代表文件
  • l :代表链接(可以认为是window中的快捷方式)

后面的9位分为3组,每3位置一组,分别代表属主的权限,与当前用户同组的用户的权限,其他用户的权限

  • r: 代表权限是可读,r也可以用数字4表示
  • w: 代表权限是可写,w也可以用数字2表示
  • x: 代表权限是可执行,x也可以用数字1表示
    | 主user | 主user | 主user | group | group | group | 其他用户 | 其他用户 | 其他用户 |
    | --- | --- | --- | --- | --- | --- | --- | --- | --- |
    | r | w | x | r | w | x | r | w | x |
    | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |

文件类型标识

通过ll展示

  • 普通文件(-
  • 目录(d
  • 符号链接(l
  • * 进入etc可以查看,相当于快捷方式
  • 字符设备文件(c)
  • 块设备文件(s)
  • 套接字(s)
  • 命名管道(p)

文件权限管理, 修改权限

chmod 变更文件或目录的权限。(2种方法)
  • chmod 755 a.txt
  • chmod u=rwx,g=rx,o=rx a.txt

注意:
chmod 000 a.txt (虽然没有任何权限,但是root依然能读写执行)
chmod 777 a.txt 所有权限

powershell 复制代码
chmod -R 755 *  ## 为这个文件夹中的所有文件和子文件设置权限
chown 变更文件或目录改文件所属用户和组

A用户创建的文件,其他用户无法修改权限,通过这个修改文件所属用户和组来使其他用户可以修改(要在创建文件的用户或root用户中修改);

  1. chown 用户:组 文件(变更一个文件) 变更当前的目录或文件的所属用户和组
    将root用户创建的文件的用户、组改为Jerry,Jerry用户就可以修改权限了;
shell 复制代码
chown jsy:jsy 3.txt
## 查看权限  : -rw-r--r--. 1 jsy jsy 时间 3.txt
  1. chown -R 用户:组名 目录名 :变更目录及其中的 所有的 子目录及文件的所属用户和组
相关推荐
大G哥33 分钟前
python 数据类型----可变数据类型
linux·服务器·开发语言·前端·python
BillKu1 小时前
Linux设置Nginx开机启动
linux·运维·nginx
baidu_375528811 小时前
光感传感器 芯片stk3171 linux驱动程序
linux·运维·服务器
飞腾开发者1 小时前
飞腾平台Arm NN软件栈安装使用指南
linux·运维·人工智能·机器学习·计算机视觉
夜暝2 小时前
Iotop使用
linux
鸠摩智首席音效师2 小时前
.NET Core 应用程序如何在 Linux 中创建 Systemd 服务 ?
linux·运维·.netcore
不是三毛没有半2 小时前
Centos 7 安装wget
linux
叫我龙翔3 小时前
【计网】实现reactor反应堆模型 --- 多线程方案优化 ,OTOL方案
linux·运维·网络
mit6.8243 小时前
[Docker#9] 存储卷 | Volume、Bind、Tmpfs | -v/mount | MySQL 灾难恢复 | 问题
linux·运维·docker·容器·架构
WangYaolove13143 小时前
请解释Python中的装饰器是什么?如何使用它们?
linux·数据库·python