当前位置:首页 » 《资源分享》 » 正文

运维专家带你系统性学linux系列-初级_涤生手记

22 人参与  2021年09月22日 11:43  分类 : 《资源分享》  评论

点击全文阅读


0.写在前面:

      这篇文章主要写给 Linux 初学者的,文章中会分享给初学者应该着重掌握的一些东西,这些内容都是本人从事 Linux 工作多年的心得体会,相信会帮初学者更快的掌握 Linux 的相关使用技能,后续作者会系统化地更新linux相关初级,中级,高级,终级篇系列文章。并且会在每个篇幅,章节给出学习意见。

本系列学完目标:

  1. 小白,大学生学完可以满足日常linux相关开发
  2. 普通运维/开发查漏补缺,提升技能,开发经验

学linu的初衷?

     从事于 IT 相关工作的同学,应该都或多或少的了解一些linux系统。其实,随着互联网行业的不断发展,大家已经每时每刻都在使用着linux系统,Linux早已渗透进我们生活中的每个角落,我们生活中使用的一切软件系统基本都是基于linux操作系统在运行。

     包括那些火热的技术,比如云计算、虚拟化、容器、大数据、人工智能,几乎都是基于 Linux 技术的,那些平台系统,电商、团购、社交、新闻、快递,都是部署在服务器端,也几乎都是基于 Linux 技术的。

      在编程的世界中,Linux 依然成为主流,如果你想要从事编程相关的工作,不论是前端、后端、运维、还是测试,Linux 都是你必须掌握技能,只有了解了 Linux ,你才可能成为合格的软件工程师。

1.常用的linux发行版本(了解

如果你的学习目标是为了以后能在工作中使用,下面两个系统学习最适合:

一、RedHat(红帽)
官方网站:https://www.redhat.com/zh(红帽中国官方 )

二、CentOS

官方网站:https://www.centos.org/(CentOS官方)

中文站:https://www.centoschina.cn/(CentOS中文站)

     这两个系统其实是一样的,红帽是正版,CentOS是重新编译后的红帽;想从事运维工作的童鞋,学会使用这两个系统,基本就无问题了。在中国市场,CentOS比红帽多,因为开源嘛!红帽呢因为售后比较贵,使用的企业不多,大多数是银行、国企使用,私企基本上都是CentOS.

三,Ubuntu

     Ubuntu作为Linux发行版中的后起之秀,Ubuntu 在短短几年时间里便迅速成长为从Linux初学者到实验室用计算机/服务器都适合使用的发行版。那么Ubuntu和Centos的区别是哪?如何选择?

      如果是作为服务器的话,这一点是CentOS更胜一筹,虽然它们同样是开源,免费。CentOS它的源码是来自由商业服务器Red Hat Enterprise Linux。有很多公司都是用CentOS来代替商业版的Red Hat Linux,同时它的稳定性也是值得信赖的。而Ubuntu的开发目的是为了使个人电脑变得简单易用,虽然也提供相应的企业服务器,不过专业的还是CentOS。当前其他版本也有很多,可以忽略吧。

    推荐一个适合学习linux的网站:linux公社

2. Linux 的内核结构

(1)用户空间:用户空间中又包含了用户的应用程序,C库

(2)内核空间:内核空间包括,系统调用,内核,以及与平台架构相关的代码

尖叫提示:普通用户了解即可,专业linux开发,运维需要了解深入些。

3. Linux 系统的安装部署

    Linux的系统安装在这里就不多做赘述了,具体的安装步骤具体可以自行百度,也可以参考这篇文章:https://zhuanlan.zhihu.com/p/41940739   整体比较简单。

尖叫提示:普通用户了解即可,专业linux运维,需要熟练掌握,生产实际部署都是模块化部署,专业工具同时装几十台,配置几十台机器。后续运维系列会告诉大家如何系统化,批量化安装部署配置系统。

4. Linux 系统的登录

    一般工作环境中,我们都是在Windows下远程连接Linux的ssh客户端进行登录访问linux 服务器,此时我们就需要借助像Xshell,SecureCRT 这样的终端模拟器软件,两个软件使用起来也很方便,下面给出了一些可以学习参考的链接:
Xshell 的安装和使用详情:https://www.xshellcn.com/xsh_column/lianjie-linux.html
SecureCRT的安装和使用详情:https://blog.csdn.net/Haiyang_Duan/article/details/53302378

5. Linux 系统重启

 进入linux系统之后,会出现终端命令行界面,此时我们可以在命令行操作我们想要执行的命令。
     **新手严重告警:切勿使用 rm -rf ***

在这里插入图片描述
关机命令:shutdown -h now(立刻进行关机)
                  halt(立刻进行关机)
                  poweroff(立刻进行关机)

重启命令:shutdown -r now(现在重新启动计算机)
                   reboot(现在重新启动计算机)

区别:shutdown -h now和shutdown -r now必须是root用户或者具有root权限的用户才能使用,而halt和reboot是Linux系统中的任何用户都可使用,不需要root权限。

尖叫提示:普通用户了解即可,实际除了你自己的本地虚拟机可以不停重启外,生产环境机器一般不会重启,一般都是重启服务。有些机器甚至都是开机跑了好几年都不带关机的,除非特殊情况,硬件维修,死机,搬迁等。

6. Linux 密码修改

root 用户在linux 系统中具有最高管理员权限,可以修改任意用户的密码,忘了密码都无所谓,具体操作命令如下,其他用户密码设置切换用户设置即可,root用户直接 su - username即可:

[root@testzhuji ~]# passwd test
Changing password for user test.
New password: 
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.

7. Linux 文件与目录管理,相关命令

7.1文件与目录概述

我们知道Linux里一切皆文件。要不就是文件目录。

linux的目录结构为树状结构,最顶级的目录为根目录 /。类似如下:


其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。

在开始本教程前我们需要先知道什么是绝对路径与相对路径。
绝对路径:
    路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
相对路径:
    路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法。

处理目录的常用命令
接下来我们就来看几个常见的处理目录的命令吧,要记住命令名称意思其实很简单,只要知道它是什么的简称即可:

ls(英文全拼:list files): 列出目录及文件名
cd(英文全拼:change directory):切换目录
pwd(英文全拼:print work directory):显示目前的目录
mkdir(英文全拼:make directory):创建一个新的目录
rmdir(英文全拼:remove directory):删除一个空的目录
cp(英文全拼:copy file): 复制文件或目录
rm(英文全拼:remove): 删除文件或目录
mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

你可以使用 man [命令] 来查看各个命令的使用文档,所以命令的参数不用详细去记,没必要,知道有这么个命令,实际使用时查询下即可,man的用处就是这个。如 :man cp。

7.2文件与目录相关命令演示

7.2.1. ls (列出目录)

在Linux系统当中, ls 命令可能是最常被运行的,我个人习惯直接使用ll。这个命令比较简单,常用要掌握
语法:
[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
[root@www ~]# ls [–color={never,auto,always}] 目录名称
[root@www ~]# ls [–full-time] 目录名称
选项与参数:

  •   -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
  •   -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
  •    -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

将家目录下的所有文件列出来(含属性与隐藏档)

 7.2.2  cd (切换目录)

cd是Change Directory的缩写,这是用来变换工作目录的命令。
语法:
cd [相对路径或绝对路径]
示例:切换到 /home 路径下

[root@10-90-50-75-jhdxyjd home]# cd /home/
[root@10-21-141-81-jhdxyjd home]# ll
total 4
drwx------ 3 app        app          70 Jun 13  2018 app
drwx------ 2 bigdata    bigdata      59 Sep  1 18:54 bigdata
drwx------ 2 ga         ga           59 Aug 17 16:13 ga
drwx------ 3 logview    logview      70 Feb 27  2020 logview
drwx------ 2 mobdi_prd  mobdi_prd    59 Feb 20  2021 mobdi_prd
drwx------ 4 ops        ops        4096 Jun 21 17:54 ops
drwx------ 2 packer     packer       59 Sep 21  2017 packer
drwx------ 2 spark2     spark2       79 Aug 16 21:13 spark2
d-wx------ 4 test       test        107 Apr 21 19:35 test
drwx------ 2 test2      test         59 Jul  9 15:17 test2
drwx------ 2 test3      test3        59 Jul 15 17:51 test3
drwx------ 2 yangyuying yangyuying   59 May 11  2020 yangyuying
drwx------ 2 zabbix     zabbix       59 Nov 16  2017 zabbix
drwx------ 2 zhagjch    zhagjch      59 Jan  4  2021 zhagjch
[root@10-21-141-81-jhdxyjd home]# cd app
[root@10-21-141-81-jhdxyjd app]# pwd
/home/app
[root@10-21-141-81-jhdxyjd app]# cd ..
[root@10-21-141-81-jhdxyjd home]# pwd
/home
[root@10-21-141-81-jhdxyjd home]# cd ./bigdata/
[root@10-21-141-81-jhdxyjd bigdata]# pwd
/home/bigdata

这个命令没啥说的,注意cd ..,表示返回上一层,.表示当前目录,..表示上一层目录,直接cd回车 返回根/目录。比如进入当前目录的下一层目录a 就是cd  ./a

7.2.3  mkdir (创建新目录) (常用)

如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。
基础语法:
    mkdir [-mp] 目录名称
选项与参数:

  •  -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
  •  -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

示例:使用绝对路径创建test目录

[root@10-90-50-75-jhdxyjd home]# mkdir /test

加了这个 -p 的选项,可以自行帮你创建多层目录!

[root@10-90-50-75-jhdxyjd home]# mkdir -p  /test/test2/test3

7.2.3  pwd (显示目前所在的目录)

pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。
示例:显示当前所在的目录

[root@10-90-50-75-jhdxyjd home]# pwd
/home

7.2.4  rmdir (删除空的目录)与rm

基础语法:

rmdir [-p] 目录名称
选项与参数:

  •     -p :连同上一级『空的』目录也一起删除

示例:删除多级目录 /test/test2/test3/(如果目录下有内容会报错)

[root@10-90-50-75-jhdxyjd home]# rmdir /test/test2/test3/

不过要注意的是

[root@10-90-50-75-jhdxyjd home]# rm -rf /test/

这个 rmdir 仅能删除空的目录,你可以使用 rm -rf 命令来强制删除非空目录。
示例:

[root@10-90-50-75-jhdxyjd home]# rm -rf /test/

rm (移除文件或目录),这个才是常用的,但要慎用。
rm [-fir] 文件或目录
选项与参数:

  •    -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  •    -i :互动模式,在删除前会询问使用者是否动作
  •    -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

7.2.5 cp (复制文件或目录)

cp 即拷贝文件和目录。
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 … directory
选项与参数:

  • -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
  • -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
  • -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(次常用)
  • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
  • -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  • -r:递归持续复制,用於目录的复制行为;(常用)
  • -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
  • -u:若 destination 比 source 旧才升级 destination !

示例:用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc

[root@10-90-50-75-jhdxyjd ~]# cp ~/.bashrc /tmp/bashrc

7.2.6 mv (移动文件与目录,或修改名称)

基础语法:
mv [-fiu] source destination
mv [options] source1 source2 source3 … directory
选项与参数:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

示例:复制一文件,创建一目录,将文件移动到目录中

[root@10-90-50-75-jhdxyjd tmp]# cd /tmp/
[root@10-90-50-75-jhdxyjd tmp]# cp ~/.bashrc bashrc
[root@10-90-50-75-jhdxyjd tmp]# mkdir mvtest1
[root@10-90-50-75-jhdxyjd tmp]# mv bashrc mvtest1

尖叫提示:mv速度贼快,因为他其实就是系统层面的文件重命名rename,要比cp快N倍。所以能mv不要cp尤其大文件,但是mv文件只有一份,重命名挪动了位置,cp则有多份。

8. Linux 文件内容查看

Linux系统中使用以下命令来查看文件的内容:

cat  由第一行开始显示文件内容
tac  从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl   显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巴几行
你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。

8.1 cat 【由第一行开始显示文件内容】和tac

基础语法:
cat [-AbEnTv]
选项与参数:

  • -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
  • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
  • -E :将结尾的断行字节 $ 显示出来;
  • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
  • -T :将 [tab] 按键以 ^I 显示出来;
  • -v :列出一些看不出来的特殊字符

示例:查看 /etc/hosts 这个文件的内容

[root@10-90-50-75-jhdxyjd tmp]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

tac 【与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!】
示例:

[root@10-90-50-75-jhdxyjd tmp]# tac /etc/hosts
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

8.2 nl 【显示行号】,不常用

基础语法:
nl [-bnw] 文件
选项与参数:
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在荧幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
示例:用 nl 列出 /etc/hosts 的内容

[root@10-90-50-75-jhdxyjd tmp]# nl /etc/hosts
     1  127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
     2  ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

8.3 more 【一页一页翻动】,常用

在 more 这个程序的运行过程中,你有几个按键可以按的:
空白键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;

  • :f :立刻显示出档名以及目前显示的行数;
  • q :代表立刻离开 more ,不再显示该文件内容。
  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
[root@10-90-50-75-jhdxyjd tmp]# more /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

8.4  less 【一页一页翻动】

less运行时可以输入的命令有:

  • 空白键 :向下翻动一页;
  • [pagedown]:向下翻动一页;
  • [pageup] :向上翻动一页;
  • /字串 :向下搜寻『字串』的功能;
  • ?字串 :向上搜寻『字串』的功能;
  • n :重复前一个搜寻 (与 / 或 ? 有关!)
  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  • q :离开 less 这个程序;
[root@10-90-50-75-jhdxyjd tmp]# less /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
/etc/hosts (END) 

8.5 head 【取出文件前面几行】

head [-n number] 文件
选项与参数:

  • -n :后面接数字,代表显示几行的意思

示例:默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样

[root@10-90-50-75-jhdxyjd tmp]# head -n 20 /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6f
#
# For more information about this file, see the man pages man(1)
# and man.conf(5).
#
# This file is read by man to configure the default manpath (also used
# when MANPATH contains an empty substring), to find out where the cat
# pages corresponding to given man pages should be stored,
# and to map each PATH element to a manpath element.
# It may also record the pathname of the man binary. [This is unused.]
# The format is:
#
# MANBIN                pathname
# MANPATH               manpath_element [corresponding_catdir]
# MANPATH_MAP           path_element    manpath_element
#

8.6  tail 【取出文件后面几行】

基础语法:
tail [-n number] 文件
选项与参数:

  • -n :后面接数字,代表显示几行的意思
  • -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

示例:默认的情况中,显示最后的十行!若要显示最后的 20 行,执行如下命令

[root@10-90-50-75-jhdxyjd tmp]# tail -n 20 /etc/man.config
# Decompress with given decompressor when input file has given extension
# The command given must act as a filter.
#
.gz             /usr/bin/gunzip -c
.bz2            /usr/bin/bzip2 -c -d
.lzma           /usr/bin/unlzma -c -d
.z
.Z              /bin/zcat
.F
.Y
#
# Enable/disable makewhatis database cron updates.
# If MAKEWHATISDBUPDATES variable is uncommented
# and set to n or N, cron scripts 
# /etc/cron.daily/makewhatis.cron
# /etc/cron.weekly/makewhatis.cron
# will not update makewhatis database.
# Otherwise the database will be updated.
# 
#MAKEWHATISDBUPDATES    n

9. Linux 文件权限管理

LInux作为更安全的操作系统,为不同的文件配置不同的文件权限进行管理,单个文件来看权限大致分为下面三种:

所有者权限:文件所有者能够进行的操作
组权限:文件所属用户组能够进行的操作
外部权限(其他权限):其他用户可以进行的操作。

9.1 .文件权限的查看

示例:

[root@10-90-50-75-jhdxyjd tmp]# ls -l /etc/hosts
-rw-r--r-- 1 root root 200 Sep  8 13:02 /etc/hosts

 内容解读:
第一列就表示的是文件/etc/hosts的相关权限。
第一列的字符可以详细的列为三部分,每一部分有三个小字符组成,每个字符都代表不同的权限,r读权限、w写权限、x执行权限:
第一部分字符(2-4)表示文件所有者的权限,-rw-r–r--表示所有者拥有r读权限、w写权限。
第二部分字符(5-7)表示文件所属用户组的权限,-rw-r–r-- 表示该组拥有r读权限。
第三部分字符(8-10)表示所有其他用户的权限,-rw-r–r-- 表示其他用户只有r读取权限。

9.2 .文件权限更改

  可以使用 chmod (change mode) 命令来改变文件权限。
一种是数字,一种是符号。
文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4 w:2 x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的。
示例: -rwxrwx— 分数则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= — = 0+0+0 = 0
所以该文件的权限数字就是 770
命令语法:
chmod [-R] xyz 文件或目录
操作示例:很多人懒省事,直接都是777,所有权限都有了

[root@10-90-50-75-jhdxyjd hadoop]# chmod 770 1.txt 
[root@10-90-50-75-jhdxyjd hadoop]# ls -l
total 8
-rwxrwx---  1 root root    0 Sep  8 17:33 1.txt

符号类型改变文件权限

user:用户
group:组
others:其他
那么我们就可以使用 u, g, o 来代表三种身份的权限。

示例:如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定。
操作示例:

[root@10-90-50-75-jhdxyjd hadoop]#  touch test2  //创建文件
[root@10-90-50-75-jhdxyjd hadoop]# ls -al test2  //查看现有权限
-rw-r--r-- 1 root root 0 Sep  8 17:37 test2
[root@10-90-50-75-jhdxyjd hadoop]# chmod u=rwx,g=rx,o=r  test2  //更改权限
[root@10-90-50-75-jhdxyjd hadoop]# ls -al test2  //查看权限
-rwxr-xr-- 1 root root 0 Sep  8 17:37 test2
[root@10-90-50-75-jhdxyjd hadoop]# chmod  a-x  test2  //去掉指定权限
[root@10-90-50-75-jhdxyjd hadoop]# ls -al test2 
-rw-r--r-- 1 root root 0 Sep  8 17:37 test2

  这些是lunix初级入门,后面继持续更新中级,高级系列,欢迎大家关注收藏,交流。 


点击全文阅读


本文链接:http://zhangshiyu.com/post/28353.html

文件  目录  行号  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1