Linux教程

Linux系统

本文主要是介绍Linux系统,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Linux一切皆文件,文件的读写执行、权限(用户、用户组)、系统(磁盘、进程)。

服务器通常使用LAMP(Linux+Apache+MySQL+PHP)或LNMP(Linux+Nginx+MySQL+PHP)组合。

Windows中进程叫做”服务“(service),在Linux中叫”守护进程“(daemon)。

 

用户登录Linux的三种方法:

  • 命令行登录(本地直接登录)

  • ssh登录(远程登录云服务器)

  • 图形界面登录(虚拟机登录)

 

Linux链接分为两种:硬链接、软连接。

  • 硬链接:A--B,假设B是A的硬链接,那么他们两个指向同一个文件。允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删。

  • 软链接:软链接又叫符号链接,类似windows下的快捷方式,删除源文件,快捷方式也访问不了了。

 

一、环境搭建

1.1 虚拟机

  1. 下载安装VMware虚拟机软件(需要激活码激活);

  2. 下载CentOS 7镜像,Linux磁盘分区的时候注意分区名(/boot、/home);

  3. VMware安装Linux系统(百度博客);

    点击屏幕进入虚拟机,Ctrl+Alt将聚焦退出虚拟机

    账号:root 密码:qwedsa

 

  • 快照

    保留当前系统信息为快照,随时可以恢复,以防未来系统被玩坏。

    虚拟机——快照——拍摄快照

  • 本地网络配置

    保证Linux虚拟机和本机处在同一个网段,对应配置文件为/etc/sysconfig/network-scripts/,虚拟机默认ifcfg-eno16777736

    静态连接:固定ip地址。

    动态连接(dhcp-桥接模式):虚拟机动态连接网络,一定要桥接到正确的网卡。

    虚拟机——设置——网络适配器——桥接模式

    编辑——网络编辑器——更改设置——桥接模式——已桥接至...

    vim ifcfg-eno16777736
    ​
    # 动态连接
    BOOTPROTO="dhcp"
    ​
    #静态连接,Windows ping Linux
    BOOTPROTO=none
    ping 192.168.1.102

    傻瓜式配置,只能在图形界面下有效

    nm-connection-editor

     

 

1.2 云服务器

  • 购买配置服务器:https://www.aliyun.com/minisite/goods?userCode=r5saexap&share_source=copy_link

  • 下载Xshell等远程连接工具(22端口)

  • 下载Xftp等文件上传工具(21端口)

 

二、Linux目录

  • /bin:bin是Binary的缩写,这个目录存放着最常用的命令。

  • /boot:存放着启动Linux的一些核心文件,包括一些连接文件和镜像文件。

  • /dev:dev是Device的缩写,存放Linux外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

  • /etc:存放所有系统管理所需要的配置文件和子目录。

  • /home:用户的主目录,在Linux中,每个用户都有自己的目录,一般以用户账户命名。

  • /lib:这个目录存放着系统最基本的动态连接共享库,作用类似于Windows中的DLL文件。

  • /lost+found:这个目录一般是空的,当系统非法关机后,里面就会存放文件。

  • /media:Linux系统会自动给识别一些设备,如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下。

  • /mnt:系统目录提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

  • /opt:主机额外安装软件所摆放的目录。比如安装Oracle数据库,就可以放到这个目录下。默认为空。

  • /proc:这是一个虚拟的目录,它是系统的一个映射,可以通过直接访问这个目录来获取系统信息。

  • /root:该目录是系统管理员,也称作超级权限者的用户主目录。

  • /sbin:s就是Super User的意思,这里存放系统管理员使用的系统管理程序。

  • /srv:该目录存放一些服务启动之后需要提取的数据。

  • /sys:这是Linux2.6内核的很大的一个变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs

  • /tmp:这个目录用来存放一些临时文件。用完即删的文件,如安装包。

  • /usr:usr是Unix Software Resource的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于Windows下的program files目录。

  • /usr/bin:系统用户使用的应用程序。

  • /usr/src:内核源代码默认放置目录。

  • /var:这个目录存放着不断扩充的东西,习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件。

  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,该目录下的文件就会被删除。

  • /www:存放服务器网站相关的资源,如环境、网站项目。

 

三、基本命令

Ctrl+C:退出错误的命令。

Ctrl+L:清屏。

Ctrl+Z:暂停操作。

Tab:自动补全文件或目录。

reset     # 重新初始化终端/清屏;
​
clear     # 清屏,也可使用快捷键Ctrl+L;
​
history     # 查看历史命令;
​
help     # 帮助;
​
exit      # 退出;
​
#      # 注释。
​
|     # 在Linux中 "|" 叫做管道符,A|B,把A命令的结果作为输出操作B命令
​
ifconfig   # 查看网络配置

 

3.1 关机

sync  # 将数据由内存同步到硬盘
​
shutdown    # 关机指令,可以man shutdown来看一下帮助文档,例如你可以使用如下命令关机:
​
shutdown -h 10   # 计算机将在10分钟后关机
​
shutdown -h now   # 立刻
​
shutdown -h 20:00   # 计算机在今天20:00关机
​
shutdown -h +10   # 10分钟后关机
​
shutdown -r now   # 系统立刻重启
​
shutdown -r +10   # 系统10分钟后重启
​
reboot    # 系统立刻重启,等同于shutdown -r now
​
halt   # 关闭系统,等同于shutdown -h now和poweroff

 

3.2 目录管理

绝对路径:路径全称,如:D:\书&笔记\java资料\Java_Teach\博客;

相对路径:相对于当前路径进行操作。

cd目录名绝对路径都是以/开头,相对路径对于当前目录该如何寻找。

cd      # 改变目录
cd ..   # 退回到上一菜单
cd ./   # 当前目录
​
ls       # 列出当前目录中的所有文件
ls -l    # 列出当前目录中的所有文件,包括属性和权限
ls -a    # 列出当前目录中的所有文件,包括隐藏文件
ls -al   # 列出当前目录中的所有文件,包括属性和权限、隐藏文件
​
pwd   # 显示当前所在的目录路径
​
mkdir      # 新建一个目录,即新建文件夹
mkdir -p   # 递归创建一个目录,mkdir -p test1/test2/test3
​
rmdir       # 删除一个空目录
rmdir -p    # 递归删除一个目录,rmdir -p test1/test2/test3,删除多个层级目录
​
touch    # 新建一个文件,touch index.js就会在当前目录下新建一个index.js文件
​
cp    # 复制文件或者目录,cp install.sh test,将install.sh复制到test目录中
​
rm          # 移除文件或者目录,rm index.js就会把index.js删除
rm -f       # 移除文件或者目录,忽略不存在的文件,不会出现警告,强制删除
rm -r       # 递归删除目录,rm -r src删除src目录
rm -i       # 删除时询问是否删除
rm -rf      # 强行删除一个目录
rm -rf /    # 递归删除,删除电脑中全部文件,删库跑路操作,切勿使用
​
mv      # 移动文件或目录、重命名文件,mv index.html src,将我们要移动的文件index.html移动到目标文件夹src;mv test test1,将test文件重命名为test1
mv -f   # 强制移动
mv -u   # 只替换更新过的文件
​
ln      # 创建硬链接,ln f1 f2,创建硬链接f2链接到f1
ln -s   # 创建软连接

 

3.3 文件属性修改

文件属性

lrwxrwxrwx. 1 root root 7 10月 28 00:46 bin -> usr/bin

dr-xr-xr-x. 5 root root 4096 10月 28 00:53 boot

  • 第1个字符代表文件属性

    d:目录

    -:文件

    l:link file,表示链接文档

    b:表示为装置文件里面可供储存的接口设备(可随机存取装置)

    c:表示为装置文件里面的串行端口设备,例如鼠标、键盘(一次性读取装置)

  • 接下来9个字符,每三个为一组,分别为属主权限属组权限其他用户权限,且都为[rwx]三个参数的组合,如果没有这个权限则用-代替。

    r:可读red

    w:可写write

    x:可执行execute

  • 文件个数

  • 属主和属组

  • 文件大小

  • 创建时间

  • 文件名,链接文档指向具体目录

chgrp 属组名 文件名       # 修改文件属组
chgrp [-R] 属组名 文件名  # 递归修改文件属组,修改该文件即该文件下子目录的数组
​
chown 属主名 文件名               # 修改文件属主
chown 属主名:属组名 文件名         # 修改文件属主、属组
chown [-R] 属主名 文件名          # 递归修改文件属主
chown [-R] 属主名:属组名 文件名    # 递归修改文件属主、属组
​
chmod xyz     # 更改文件,xyz代表数字时:r(4)、w(2)、x(1),chmod 777代表属主、属组和其他用户都可读可写可执行;xyz代表符号时(略)

 

3.4 文件内容查看

cat    # 由第一行开始显示文件内容,用来读文章、读配置文件,cat ifcfg-eth0
tac    # cat倒写,从最后一行开始显示文件内容
​
nl     # 显示内容时,顺便输出行号
​
more   # 一页一页地显示文件内容。空格 向下翻页,回车 向下看一行,:f 看当前行号
less   # 与more类似,且可以翻页。PageUp/PageDown 上下翻页,q 退出,/字符 向下查找字符串,?字符 向上查找字符串,n 寻找下一个,N 向上寻找,其他操作参照more
​
head -n  # 只看头几行,head -n 20 csh.log,看csh.login的头20行
tail -n  # 只看尾几行
​
echo   # 输入字符串,echo "i love you" >>f1,向f1中写入“i love you”

 

3.5 Vim编辑器

Vim通过插件可以实现和IDE一样的功能。

Vim是从发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在Linux中必须会使用。

Vim分为三种模式:命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)

  • 命令模式

    刚进入Vim,便进入了命令模式,如果文件存在,那么就修改这个文件;如果文件不存在,那么。

    vim xx.txt

    此时敲击键盘的动作会被Vim识别为命令,不会输入字符:

    • i/a/o:切换到输入模式,输入字符;

    • x:删除当前光标所在的字符;

    • ::切换到底线命令模式。如果是输入模式,需要先退出。

  • 输入模式

    输入模式下可以使用键盘。

    • 回车:换行;

    • Backspace:删除光标前一个字符;

    • DEL:删除光标后一个字符;

    • 方向键:移动光标;

    • HOME/END:移动光标到行首/行末;

    • Page Up/Page Down:上下翻页;

    • Insert:切换光标输入/替换模式;

    • ESC:退出输入模式,切换到命令模式。

  • 底线命令模式

    底线命令模式可以输入单个或多个字符的命令。

    • w:保存文件

    • q:退出程序

    • set nu:显示行号

    • ESC:退出底线命令模式,切换到命令模式。

三个模式的更多操作请百度。

Vim编译器底下:文件名、行数、字符、光标位置。

 

3.6 账号管理

Linux系统是一个多用户多任务的分时操作系统,任何一个想要使用系统资源的用户,都必须向系统管理员申请一个账号,然后以这个账号的身份进入系统。实现用户的账号管理,主要的工作有以下几个方面:

  • 用户账号的添加、删除和修改

    可从/etc/passwd文件中查看用户账号记录。

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

    xj:x:1000:1000:xj:/home/xj:/bin/bash

    用户名:口令(密码,我们不可见):用户标识号:组标识号:(注释性描述:)主目录:登录Shell

    useradd -m               # 添加用户,自动创建这个用户的主目录,useradd -m xj,默认目录为/home/xj
    useradd -c comment       # 指定一段注释描述
    useradd -d 目录           # 指定用户主目录,如果此目录不存在,则使用-m
    useradd -g 用户组         # 指定用户所属的用户组
    useradd -G 用户组,用户组   # 指定用户的附加组
    useradd -s Shell文件      # 指定用户的登录Shell
    useradd -u 用户号         # 指定用户的用户号,如果同时又-o选项,则可以重复使用其他用户的标识号
    ​
    userdel -r   # 删除用户,清空目录,userdel -r xj
    ​
    usermod -d 目录    # 修改用户目录,usermod -d /home/233 xj
  • 用户口令的管理

    登录口令加密后存放在/etc/shadow中。

    passwd      # 修改密码,默认修改当前用户密码,root用户也可修改指定用户密码,passwd xj,修改用户xj的密码,Linux修改密码不会显示,直接输入即可
    passwd -l   # 锁定用户,让其不能登录,passwd -l xj
    passwd -d   # 清空密码并锁定用户,也不能登录
    passwd -u   # 解锁用户
  • 用户组的管理

    每个用户都有一个用户组,系统可以对一个用户组的所有用户进行集中管理(root、开发、测试、运维...)。不同Linux系统对用户组的规定不同,如Linux下的用户属于与他同名的用户组,这个用户组在创建用户时同时创建。从/etc/group中查看。

    xl:x:1001:

    groupadd           # 添加用户组,groupadd xl,创建xl用户组
    groupadd -g id     # 添加用户组并指定id,如果不指定,默认从1000开始自增
    ​
    groupdel      # 删除用户组,groupdel xl
    ​
    groupmod -g id         # 修改用户组id,groupmod -g 520 xl
    groupmod -n 用户组名    # 修改用户组名,groupmod -n newxl xl
    ​
    $ newgrp root   # 登陆后切换用户组,或是在创建的时候就-G指定,一般不修改
  • 切换用户

    终端命令行说明:[用户名@主机名 当前路径]#(超级用户)/$(普通用户) [root@sep home]#[xj@sep home]$

    su      # 切换用户,su xj
    exit    # 退回到root用户
    ​
    hostname  # 查看或临时修改当前主机名,hostname,查看主机名;hostname xl,将主机名修改为xl,重连后生效

     

3.7 磁盘管理

df      # 列出文件系统整体的磁盘使用量,单位K
df -h   # 列出磁盘整体使用量,单位M
​
du          # 检查磁盘空间使用量
du -a       # 检查磁盘空间使用量,包括隐藏文件
du -sm /*   # 检查根目录下每个目录所占的容量
​
mount       # Mac或Linux挂载本地磁盘或文件,mount /dev/sep /mnt/sep,将外部设备sep挂载到mnt目录下,实现访问
umount      # 卸载,umount /mnt/sep
umount -f   # 强制卸载

安装完JDK后,可以通过Java命令来查看信息。

 

3.8 进程管理

在Linux中,每一个程序都有自己的进程,每一个进程都有一个id号(类似Windows中的PID)。

每一个进程都有以一个父进程。

进程可以有两种存在方式:前台、后台。一般服务都是后台运行的,基本程序都是前台运行的,nohup代表后台执行程序。

ps       # 查看当前系统中正在执行的各种进程信息
ps -a    # 显示当前终端运行的所有进程信息(当前进程)
ps -u    # 以用户的信息显示进程
ps -x    # 显示后台运行进程的参数
ps -aux  # 显示所有进程,ps -aux|grep mysql,(grep查找文件中符号条件的字符串),查看mysql进程
ps -ef   # 可以查看到父进程信息,一般可以通过目录树结构查看
​
pstree -p  # 查看目录树结构,显示父id
pstree -u  # 查看目录树结构,显示用户组
pstree -pu # 查看目录树结构,显示id和用户组
​
kill -9 id   # 杀掉进程,kill -9 31065,结束id号为31065的进程

 

四、软件的安装和部署

安装软件一般有四种方式:

  • rpm安装(JDK)

  • 解压缩安装(Tomcat)

  • yum在线安装(Docker)

  • 宝塔面板安装

4.1 JDK安装

  1. 下载JDK rpm

  2. 安装Java环境;

    # 检测当前系统是否存在Java环境
    java -version
    ​
    # 如果有Java要卸载
    rpm -qa|grep jdk   # 检测JDK版本信息
    rpm -e --nodeps jdk    # 强制移除
    ​
    # 没有Java环境,即可安装
    rpm -ivk rpm包
  3. 配置环境变量(rpm貌似不需要,解压缩安装才需要)

    环境变量配置文件/etc/profile

    # 编辑配置文件
    vim /etc/profile
    # 插入Java环境变量
    JAVA_HOME=/urs/java/jdk1.8
    CLASSPATH=$JAVA_HOME/lib/
    PATH=$PATH:$JAVA_HOME/bin
    export PATH JAVA_HOME CLASSPATH
    ​
    # 让配置文件生效
    source /etc/profile
    ​
    # 查看Java环境
    java -version

 

4.2 Tomcat安装

  1. 下载Tomcat tar.gz

  2. 解压Tomcat;

    tar -zxvf apache-tomcat-9.0.54.tar.gz
  3. 重命名解压文件为tomcat9(方便操作)

  4. 启动Tomcat测试;

    进入bin目录,执行 ./xxx.sh脚本即可运行。

    # 执行
    ./startup.sh
    ​
    # 停止
    ./shotdown.sh
  5. 开启防火墙8080端口;

    如果防火墙8080端口开了,并且阿里云安全组也开放了,就可以直接访问远程了。

    # 查看firewall服务状态
    systemctl status firewalld
    ​
    # 根据情况打开firewall
    service firewalld start      # 开启firewalld.service服务
    service firewalld restart    # 重启firewalld.service服务
    service firewalld stop       # 关闭firewalld.service服务
    ​
    # 查看firewall开启的端口
    firewall-cmd --list-all     # 查看防火墙所有信息
    firewall-cmd --list-ports   # 查看防火墙开启的端口信息,如果时阿里云,需要配置安全组规则
    ​
    # 如果没有打开8080端口,则开启,然后重启
    firewall-cmd --zone=public --add-port=8080/tcp --permanent    # 开启防火墙的8080端口
    systemctl restart firewalld.service    # 重启防火墙
    ​
    --zone      # 作用域
    --add-port=9000/tcp    # 添加端口,格式为:端口号/通讯协议
    --permanent     # 永久生效,没有此参数重启后失效

    上传完毕项目,直接够没自己的域名,备案解析过去即可。

    域名解析后,如果端口是80-http或者443-https,可以直接访问;如果是9000、8080,就需要通过Apache或者Nginx做一下反向代理,配置文件即可。

 

4.3 Docker安装

官网安装操作手册:Install Docker Engine on CentOS | Docker Documentation

在Linux下执行,一定要联网,yum在线安装。

  1. 检测CentOS 7;

    cat /etc/redhat-release
  2. 安装准备环境

    yum -y install 包名,yum install 安装命令,-y 所有提示都为y

    yum -y install gcc
    yum -y install gcc-c++
  3. 根据官网安装

    # 卸载以前的安装包
    sudo yum remove docker \
                    docker-client \
                    docker-client-latest \
                    docker-common \
                    docker-latest \
                    docker-latest-logrotate \
                    docker-logrotate \
                    docker-engine
    ​
    # 安装环境
    sudo yum install -y yum-utils
    ​
    # 安装镜像
    sudo yum-config-manager \
      --add-repo \
      https://download.docker.com/linux/centos/docker-ce.repo    # 国外镜像,速度慢可用阿里云镜像
    sudo yum-config-manager -add-repo http://mirrors.aliyum.com/docker-ce/linux/docker-ce.repo    # 阿里云镜像
    ​
    # 更新yum软件的索引包
    yum makecache fast
    ​
    # 安装docker
    yum -y install docker-ce docker-ce-cli containerd.io
    ​
    # 启动docker
    systemctl start docker
    ​
    # 测试
    docker version
    docker run hello-world
    docker images

 

 

 

这篇关于Linux系统的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!