开发者社区> 微枫Micromaple> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Linux 入门超详细讲解

简介: Linux 入门超详细讲解
+关注继续查看

OpenSSH

SSH 是芬兰一家公司开发。但是受到版权和加密算法限制,现在很多人都使用 OpenSSH。OpenSSH 是 SSH 的替代软件,免费。

OpenSSH 由客户端和服务端组成。

  • 基于口令的安全验证:知道服务器的帐号密码即可远程登录,口令和数据在传输过程中都会被加密。
  • 基于密钥的安全验证:此时需要在创建一对密钥,把公有密钥放到远程服务器上自己的宿主目录中,而私有密钥则由自己保存。

检查软件是否安装

apt-cache policy openssh-client openssh-server

安装服务端

apt-get install openssh-server

安装客户端

apt-get install openssh-client

OpenSSH 服务器的主要配置文件为 /etc/ssh/sshd\_config,几乎所有的配置信息都在此文件中。

Linux 目录结构

目录说明
bin存放二进制可执行文件(ls,cat,mkdir等)
boot存放用于系统引导时使用的各种文件
dev用于存放设备文件
etc存放系统配置文件
home存放所有用户文件的根目录
lib存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt系统管理员安装临时文件系统的安装点
opt额外安装的可选应用程序包所放置的位置
proc虚拟文件系统,存放当前内存的映射
root超级用户目录
sbin存放二进制可执行文件,只有root才能访问
tmp用于存放各种临时文件
usr用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录
var用于存放运行时需要改变数据的文件

Linux 操作文件夹目录

命令说明语法参数参数说明
ls显示文件和目录列表ls [-alrtAFR] [name...]
-l列出文件的详细信息
-a列出当前目录所有文件,包含隐藏文件
mkdir创建目录mkdir [-p] dirName
-p父目录不存在情况下先生成父目录
cd切换目录cd [dirName]
touch生成一个空文件
echo生成一个带内容文件echo abcd > 1.txt,echo 1234 >> 1.txt
cat显示文本文件内容cat [-AbeEnstTuv] [--help] [--version] fileName
cp复制文件或目录cp [options] source dest
rm删除文件rm [options] name...
-f强制删除文件或目录
-r同时删除该目录下的所有文件
mv移动文件或目录mv [options] source dest
find在文件系统中查找指定的文件
-name文件名
grep在指定的文本文件中查找指定的字符串
tree用于以树状图列出目录的内容
pwd显示当前工作目录
ln建立软链接
more分页显示文本文件内容
head显示文件开头内容
tail显示文件结尾内容
-f跟踪输出

Linux 系统管理命令

命令说明
stat显示指定文件的相关信息,比ls命令显示内容更多
who显示在线登录用户
hostname显示主机名称
uname显示系统信息
top显示当前系统中耗费资源最多的进程
ps显示瞬间的进程状态
du显示指定的文件(目录)已使用的磁盘空间的总量
df显示文件系统磁盘空间的使用情况
free显示当前内存和交换空间的使用情况
ifconfig显示网络接口信息
ping测试网络的连通性
netstat显示网络状态信息
clear清屏
kill杀死一个进程

Linux 开关机命令

shutdown 命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。

命令语法参数参数说明
shutdownshutdown [-t seconds] [-rkhncfF] time [message]
-t seconds设定在几秒钟之后进行关机程序
-k并不会真的关机,只是将警告讯息传送给所有只用者
-r关机后重新开机(重启)
-h关机后停机
-n不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
-c取消目前已经进行中的关机动作
-f关机时,不做 fcsk 动作(检查 Linux 档系统)
-F关机时,强迫进行 fsck 动作
time设定关机的时间
message传送给所有使用者的警告讯息
  • 重启

    • reboot
    • shutdown -r now
  • 关机

    • shutdown -h now

Linux 压缩命令

  • tar

    命令语法参数参数说明
    tartar [-cxzjvf] 压缩打包文档的名称 欲打包目录
    -c建立一个归档文件的参数指令
    -x解开一个归档文件的参数指令
    -z是否需要用 gzip 压缩
    -j是否需要用 bzip2 压缩
    -v压缩的过程中显示文件
    -f使用档名,在 f 之后要立即接档名
    -tf查看归档文件里面的文件

    例子:

    • 压缩文件夹: tar -zcvf test.tar.gz test\
    • 解压文件夹:tar -zxvf test.tar.gz
  • gzip

    命令语法参数参数说明
    gzipgzip [选项] 压缩(解压缩)的文件名
    -d解压缩
    -l对每个压缩文件,显示压缩文件的大小,未压缩文件的大小,压缩比,未压缩文件的名字
    -v对每一个压缩和解压的文件,显示文件名和压缩比
    -num用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6

    说明:压缩文件后缀为 gz

  • bzip2
命令语法参数参数说明
bzip2bzip2 [-cdz]
-d解压缩
-z压缩参数
-num用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6

说明:压缩文件后缀为 bz2

Linux 编辑器

  • vim

    运行模式

    • 编辑模式:等待编辑命令输入
    • 插入模式:编辑模式下,输入 i 进入插入模式,插入文本信息
    • 命令模式:在编辑模式下,输入 : 进行命令模式

    命令

    :q 直接退出vi

    :wq 保存后退出vi ,并可以新建文件

    :q! 强制退出

    :w file 将当前内容保存成某个文件

    :set number 在编辑文件显示行号

    :set nonumber 在编辑文件不显示行号

  • nano

    nano 是一个字符终端的文本编辑器,有点像 DOS 下的 editor 程序。它比 vi/vim 要简单得多,比较适合 Linux 初学者使用。某些 Linux 发行版的默认编辑器就是 nano。

    命令

    • 保存:ctrl + o
    • 搜索:ctrl + w
    • 上一页:ctrl + y
    • 下一页:ctrl + v
    • 退出:ctrl + x

Linux 软件包管理

  • 修改数据源

    由于国内的网络环境问题,我们需要将 Ubuntu 的数据源修改为国内数据源,操作步骤如下:

    • 查看系统版本

      lsb_release -a

      ​ 输出结果为

      No LSB modules are available.
      Distributor ID:    Ubuntu
      Description:    Ubuntu 16.04 LTS
      Release:    16.04
      Codename:    xenial

      注意: Codename 为 xenial,该名称为我们 Ubuntu 系统的名称,修改数据源需要用到该名称

    • 编辑数据源

      vi /etc/apt/sources.list

      删除全部内容并修改为

      deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
      deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
      deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
      deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    • 更新数据源

      apt-get update
    • 其他常用 APT 命令

      • 安装软件包

        apt-get install packagename
      • 删除软件包

        apt-get remove packagename
      • 更新软件包列表

        apt-get update
      • 升级有可用更新的系统(慎用)

        apt-get upgrade
      • 搜索

        apt-cache search package
      • 获取包信息

        apt-cache show package
      • 删除包及配置文件

        apt-get remove package --purge
      • 了解使用依赖

        apt-cache depends package
      • 查看被哪些包依赖

        apt-cache rdepends package
      • 安装相关的编译环境

        apt-get build-dep package
      • 下载源代码

        apt-get source package
      • 清理无用的包

        apt-get clean && apt-get autoclean
      • 检查是否有损坏的依赖

        apt-get check

Linux 用户和组管理

  • 使用 Root 用户

    在实际生产操作中,我们基本上都是使用超级管理员账户操作 Linux 系统,也就是 Root 用户,Linux 系统默认是关闭 Root 账户的,我们需要为 Root 用户设置一个初始密码以方便我们使用。

  • 设置 Root 账户密码

    sudo passwd root
  • 切换到 Root

    su
  • 设置允许远程登录 Root

    vi /etc/ssh/sshd_config
    
    # Authentication:
    LoginGraceTime 120
    #PermitRootLogin without-password     //注释此行
    PermitRootLogin yes                             //加入此行
    StrictModes yes
    
    重启服务
    service ssh restart
  • 账户系统文件说明

    • /etc/passwd

      每一行代表一个账号,众多账号是系统正常运行所必须的,例如 bin,nobody 每行定义一个用户账户,此文件对所有用户可读。每行账户包含如下信息:

      root:x:0:0:root:/root:/bin/bash
      • 用户名: 就是账号,用来对应 UID,root UID 是 0。
      • 口令: 密码,早期 UNIX 系统密码存在此字段,由于此文件所有用户都可以读取,密码容易泄露,后来这个字段数据就存放到 /etc/shadow 中,这里只能看到 X。
      • 用户标示号(UID): 系统内唯一,root 用户的 UID 为 0,普通用户从 1000 开始,1-999 是系统的标准账户,500-65536 是可登陆账号。
      • 组标示号(GID): 与 /etc/group 相关用来规定组名和 GID 相对应。
      • 注释: 注释账号
      • 宿主目录(主文件夹): 用户登录系统后所进入的目录 root 在 /root/itcast
      • 命令解释器(shell): 指定该用户使用的 shell ,默认的是 /bin/bash
    • /etc/shadow

      为了增加系统的安全性,用户口令通常用 shadow passwords 保护。只有 root 可读。每行包含如下信息:

      root:$6$Reu571.V$Ci/kd.OTzaSGU.TagZ5KjYx2MLzQv2IkZ24E1.yeTT3Pp4o/yniTjus/rRaJ92Z18MVy6suf1W5uxxurqssel.:17465:0:99999:7:::
      • 账号名称: 需要和 /etc/passwd 一致。
      • 密码:

        经过加密,虽然加密,但不表示不会被破解,该文件默认权限如下:

        • -rw------- 1 root root 1560 Oct 26 17:20 passwd-
        • 只有root能都读写
      • 最近修改密码日期: 从1970-1-1起,到用户最后一次更改口令的天数
      • 密码最小时间间隔: 从1970-1-1起,到用户可以更改口令的天数
      • 密码最大时间间隔: 从1970-1-1起,必须更改的口令天数
      • 密码到期警告时间: 在口令过期之前几天通知
      • 密码到期后账号宽限时间
      • 密码到期禁用账户时间: 在用户口令过期后到禁用账户的天数
      • 保留
    • /etc/group

      用户组的配置文件

      root:x:0:
      • 用户组名称
      • 用户组密码: 给用户组管理员使用,通常不用
      • GID: 用户组的ID
      • 此用户支持的账号名称: 一个账号可以加入多个用户组,例如想要 itcast 加入 root 这个用户组,将该账号填入该字段即可 root:x:0:root, icast 将用户进行分组是 Linux 对用户进行管理及控制访问权限的一种手段。一个中可以有多个用户,一个用户可以同时属于多个组。该文件对所有用户可读。
    • /etc/gshadow

      该文件用户定义用户组口令,组管理员等信息只有root用户可读。

      root:\*::
      • 用户组名
      • 密码列
      • 用户组管理员的账号
      • 用户组所属账号
  • 账户管理常用命令

    • 增加用户

      useradd 用户名
      useradd -u (UID号)
      useradd -p (口令)
      useradd -g (分组)
      useradd -s (SHELL)
      useradd -d (用户目录)

      如:useradd ycq

      增加用户名为 ycq 的账户

    • 修改用户

      usermod -u (新UID)
      usermod -d (用户目录)
      usermod -g (组名)
      usermod -s (SHELL)
      usermod -p (新口令)
      usermod -l (新登录名)
      usermod -L (锁定用户账号密码)
      usermod -U (解锁用户账号)

      如:usermod -u 1024 -g group2 -G root ycq

      将 ycq 用户 uid 修改为 1024,默认组改为系统中已经存在的 group2,并且加入到系统管理员组

    • 删除用户

      userdel 用户名 (删除用户账号)
      userdel -r 删除账号时同时删除目录

      如:userdel -r ycq

      删除用户名为 ycq 的账户并同时删除 ycq 的用户目录

    • 组账户维护

      groupadd 组账户名 (创建新组)
      groupadd -g 指定组GID
      groupmod -g 更改组的GID
      groupmod -n 更改组账户名
      groupdel 组账户名 (删除指定组账户)
    • 口令维护

      passwd 用户账户名 (设置用户口令)
      passwd -l 用户账户名 (锁定用户账户)
      passwd -u 用户账户名 (解锁用户账户)
      passwd -d 用户账户名 (删除账户口令)
      gpasswd -a 用户账户名 组账户名 (将指定用户添加到指定组)
      gpasswd -d 用户账户名 组账户名 (将用户从指定组中删除)
      gpasswd -A 用户账户名 组账户名 (将用户指定为组的管理员)
    • 用户和组状态

      su 用户名(切换用户账户)
      id 用户名(显示用户的UID,GID)
      whoami (显示当前用户名称)
      groups (显示用户所属组)

Linux 文件权限管理

  • 查看文件和目录的权限

    ls -al 使用 ls 不带参数只显示文件名称,通过ls –al 可以显示文件或者目录的权限信息。

    ls -l 文件名 显示信息包括:文件类型 (d 目录,- 普通文件,l 链接文件),文件权限,文件的用户,文件的所属组,文件的大小,文件的创建时间,文件的名称

    -rw-r--r-- 1 ycq ycq 675 Aug 17 2015 .profile

    • -:普通文件
    • rw-:说明用户 ycq 有读写权限,没有运行权限
    • r--:表示用户组 ycq 只有读权限,没有写和运行的权限
    • r--:其他用户只有读权限,没有写权限和运行的权限
    -rw-r--r--1ycqycq675Oct 26 17:20.profile
    文档类型及权限连接数文档所属用户文档所属组文档大小文档最后被修改日期文档名称
    -rw-r--r--
    文档类型文档所有者权限(user)文档所属用户组权限(group)其他用户权限(other)
    • 文档类型

      • d 表示目录
      • l 表示软连接
      • 表示文件
      • c 表示串行端口字符设备文件
      • b 表示可供存储的块设备文件
      • 余下的字符 3 个字符为一组。r 只读,w 可写,x 可执行,- 表示无此权限
  • 更改操作权限

    • chown

      是 change owner 的意思,主要作用就是改变文件或者目录所有者,所有者包含用户和用户组

      chown [-R] 用户名称 文件或者目录
      chown [-R] 用户名称 用户组名称 文件或目录

      -R:进行递归式的权限更改,将目录下的所有文件、子目录更新为指定用户组权限

    • chmod

      改变访问权限

      chmod [who] [+ | - | =] [mode] 文件名
      • who

        表示操作对象可以是以下字母的一个或者组合

        • u:用户 user
        • g:用户组 group
        • o:表示其他用户
        • a:表示所有用户是系统默认的
      • mode

        表示可执行的权限,可以是 r、w、x

      • 文件名

        文件名可以使空格分开的文件列表

      • 示例
      ycq@UbuntuBase:~$ ls -al test.txt 
      -rw-rw-r-- 1 ycq ycq 6 Nov  2 21:47 test.txt
      ycq@UbuntuBase:~$ chmod u=rwx,g+r,o+r test.txt 
      ycq@UbuntuBase:~$ ls -al test.txt 
      -rwxrw-r-- 1 ycq ycq 6 Nov  2 21:47 test.txt
      ycq@UbuntuBase:~$
  • 数字设定法

    数字设定法中数字表示的含义

    • 0 表示没有任何权限
    • 1 表示有可执行权限 = x
    • 2 表示有可写权限 = w
    • 4 表示有可读权限 = r

    也可以用数字来表示权限如 chmod 755 file_name

    r w xr – xr - x
    4 2 14 - 14 - 1
    usergroupothers

    若要 rwx 属性则 4+2+1=7 可读可写可执行

    若要 rw- 属性则 4+2=6 可读可写

    若要 r-x 属性则 4+1=5 可读可执行

    ycq@UbuntuBase:~$ chmod 777 test.txt 
    ycq@UbuntuBase:~$ ls -al test.txt 
    -rwxrwxrwx 1 ycq ycq 6 Nov  2 21:47 test.txt
    
    ycq@UbuntuBase:~$ chmod 770 test.txt 
    ycq@UbuntuBase:~$ ls -al test.txt 
    -rwxrwx--- 1 ycq ycq 6 Nov  2 21:47 test.txt

Linux 安装 Java

  • 下载地址

    http://www.oracle.com/technetwork/java/javase/downloads/index.html
  • 解压缩并移动到指定目录

    • 解压缩

      tar -zxvf jdk-8u152-linux-x64.tar.gz
    • 创建目录

      mkdir -p /usr/local/java
    • 移动安装包

      mv jdk1.8.0_152/ /usr/local/java/
    • 设置所有者

      chown -R root:root /usr/local/java/
  • 配置环境变量

    • 配置系统环境变量

      nano /etc/environment
    • 添加如下语句

      PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
      export JAVA_HOME=/usr/local/java/jdk1.8.0_152
      export JRE_HOME=/usr/local/java/jdk1.8.0_152/jre
      export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    • 配置用户环境变量

      nano /etc/profile
    • 添加如下语句

      if [ "$PS1" ]; then
        if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
          # The file bash.bashrc already sets the default PS1.
          # PS1='\h:\w\$ '
          if [ -f /etc/bash.bashrc ]; then
            . /etc/bash.bashrc
          fi
        else
          if [ "`id -u`" -eq 0 ]; then
            PS1='# '
          else
            PS1='$ '
          fi
        fi
      fi
      
      export JAVA_HOME=/usr/local/java/jdk1.8.0_152
      export JRE_HOME=/usr/local/java/jdk1.8.0_152/jre
      export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
      export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
      
      if [ -d /etc/profile.d ]; then
        for i in /etc/profile.d/*.sh; do
          if [ -r $i ]; then
            . $i
          fi
        done
        unset i
      fi
    • 使用户环境变量生效

      source /etc/profile
  • 测试是否安装成功

    root@UbuntuBase:/usr/local/java# java -version
    java version "1.8.0_152"
    Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
    Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
  • 为其他用户更新用户环境变量

    su ycq
    source /etc/profile

Linux 安装 Tomcat

  • 下载地址

    https://tomcat.apache.org/
  • 解压缩并移动到指定目录

    • 解压缩

      tar -zxvf apache-tomcat-8.5.23.tar.gz
    • 变更目录名

      mv apache-tomcat-8.5.23 tomcat
    • 移动目录

      mv tomcat/ /usr/local/
  • 常用命令

    • 启动

      /usr/local/tomcat/bin/startup.sh
    • 停止

      /usr/local/tomcat/bin/shutdown.sh
  • 在目录内执行脚本

    ./startup.sh

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux入门初识Linux
Linux入门初识Linux
11 0
【Linux】(一)Linux 入门
【Linux】(一)Linux 入门
35 0
Linux入门篇
Linux入门篇
38 0
Linux入门概述
尤其是作为一个后端程序员,是必须要掌握Linux的,因为这都成为了你找工作的基础门槛了,所以不得 不学习!
31 0
Linux线程之线程栈
   我们接上一篇继续学习,这一篇的重点放在线程栈上。    我们用过pthread_create接口,也用过pthread_self接口,请看manual中的声明:  #include pthread.
634 0
linux之线程
http://blog.csdn.net/lanyan822/article/details/7586845  POSIX线程数据类型:   pthread_t  线程标识符;   pthread_mutex_t   互斥量;   pthread_codet_t   条件变量;   pth...
930 0
+关注
微枫Micromaple
立志于成为一个优秀的全栈工程师
64
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载