linux
2018-11-08 14:16:24 qq_42767233 阅读数 11
  • C语言嵌入式Linux编程7期:Linux内核常用的数据结构...

    学习嵌入式一段时间了,开始学习Linux内核、驱动了,发现看不懂?看内核代码还是感觉很吃力,云里雾里? 本期课程主要侧重于数据结构基本功的学习和Linux内核中的面向对象思想。掌握了这两项技能,再去分析Linux内核中复杂的子系统和驱动代码,相信你会跟以前有不一样的体验和收获。

    619 人正在学习 去看看 王利涛

1.Linux的主要特征

  • 1.1 基本思想
    • Linux 的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定
      的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、
      硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各
      自特性或类型的文件。至于说 Linux 是基于 Unix 的,很大程度上也是因为这两
      者的基本思想十分相近。
  • 1.2 完全免费
    • Linux 是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并
      可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来
      自全世界的无数程序员参与了 Linux 的修改、编写工作,程序员可以根据自己的
      兴趣和灵感对其进行改变,这让 Linux 吸收了无数程序员的精华,不断壮大。
  • 1.3 多用户、多任务
    • Linux 支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证
      了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux 可以使
      多个程序同时并独立地运行。
  • 1.4 支持多种平台
    • Linux 可以运行在多种硬件平台上,如具有 x86、680x0、SPARC、Alpha
      等处理器的平台。此外 Linux 还是一种嵌入式操作系统,可以运行在掌上电脑、
      机顶盒或游戏机上。2001 年 1 月份发布的 Linux 2.4 版内核已经能够完全支持
      Intel 64 位芯片架构。同时 Linux 也支持多处理器技术。多个处理器同时工作,
      使系统性能大大提高。

2.Linux的分类

  • 2.1 根据原生程度
    • Linux 系统根据其原生程度不同分为,内核版本和发行版本。
      • 1)内核版本:在 Linus 领导下的内核小组开发维护的系统内核的版本号
      • 2)发行版本:一些组织或公司在内核版基础上进行二次开发而重新发行的版本
    • 2.2 根据发行版本分支来划分
      • Linux 的发行版本众多,一些组织或公司为许多不同的目的而制作, 包括对
        不同计算机结构的支持, 对一个具体区域或语言的本地化,实时应用,和嵌入式
        系统,甚至许多版本故意地只加入免费软件。已经有超过三百个发行版被积极的
        开发,最普遍被使用的发行版有大约十二个。

      • 在这些发行版中主要可以分为两个系列:Redhat 系列和 Debian 系列。 - #### 3.linux的安装

  • 3.1 CentOS 操作系统
    • CentOS 是一个 Linux 的发行版本,是目前企业中用来做应用服务器系统的
      主要版本,由社区支持的包,旨在 100%地与 Red Hat Linux 企业版兼容。
    • CentOS 安装完成后,我们可以发现 CentOS 的文件目录结构如下,我们需
      要对 CentOS 的各个目录有一些了解。
    • /: 根目录
    • /bin: 可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等。
    • /boot: 放置 linux 系统启动时用到的一些文件。
    • /dev: 存放 linux 系统下的设备文件
    • /etc: 系统配置文件存放的目录
    • /home: 系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~ 表示当前用户的家目录
    • /lib: 系统使用的函数库的目录
    • /opt: 给主机额外安装软件所摆放的目录
    • /root: 系统管理员 root 的家目录
    • /tmp: 一般用户或正在执行的程序临时存放文件的目录
    • /usr: 应用程序存放目录
    • /var: 放置系统执行过程中经常变化的文件
  • 3.2 配置网络
    • 设置模式为网络桥接模式
    • 配置虚拟机linux网络环境
      • vi /etc/sysconfig/network-scripts/ifcfg-eth0
      • 按字母 i 进入编辑模式,加入网络静态配置
      DEVICE=eth0
      HWADDR=00:0C:29:3D:5C:B2
      TYPE=Ethernet
      UUID=66218aa7-fa93-433d-9573-772584730bcd
      ONBOOT=yes
      NM_CONTROLLED=yes
      BOOTPROTO=static #使地址静态,不自动获取
      IPADDR=192.168.13.25 #虚拟机ip地址
      NETMASK=255.255.255.0 #网络掩码
      GATEWAY=192.168.13.1 #网关 
      DNS1=114.114.114.114 #DNS
      
      按esc退出编辑 
      输入 :wq!   保存并退出
      重启网络服务
          service network restart
      :q!  不保存退出
      
    • 使用远程工具连接CentOS

4.linux的基本命令

  • Linux系统安装完成,但是我们没有安装图形界面程序,所以只能通过命令的方式进行操作和使用,在实际生产环境中,也很少会为Linux安装图形界面程序。Linux的命令很多,不能一一讲解,我们将从以下几个方面来进行学习。

  • 4.1 目录的切换命令
    • 在图形化界面的操作系统中,文件目录的切换可以使用鼠标点击来进行选择和切换,但是在Linux操作系统中,需要通过cd命令来进行切换。
    pwd      查看当前路径
    cd usr		切换到该目录下usr目录 	
    cd ../		切换到上一层目录 	
    cd /		切换到系统根目录 	
    cd ~		切换到用户主目录 	
    cd -		切换到上一个所在目录
    
  • 4.2 目录的操作命令
    • 4.2.1 创建目录
      • 创建目录使用mkdir命令,语法:mkdir 文件名称
      • 实例:在根目录下创建test目录。
      • mkdir test --> 在当前目录创建名为test的目录
    • 4.2.2 查看目录
      • 查看目录使用ls [-a|-l]命令,语法:ls 路径

      • Ls命令能够查看指定路径下的非隐藏文件,如果要查看隐藏文件在内的所有文件可以添加一个参数-a。

        • 以上以.开头的文件就是Linux系统中的隐藏文件。
      • 使用ls命令可以看到文件以及文件目录的名称,但是如果需要查看文件以及目录的详细信息,我们就需要加上-l参数。

        • 加上-l参数后,我们看到了文件对应的详细信息,ls –l也可以直接使用ll命令。
    • 4.2.3 修改目录名称
      • 修改目录使用mv命令,语法:mv 目录名称 新目录名称。
      • 实例:修改根路径下的test目录名称为newTest。
        • mv test newTest
      • 需要注意的是,mv命令不仅可以修改文件目录的名称,也可以用来修改文件的名称。
      • 实例:使用mv修改文件的名称。
        • mv abc.txt 123.txt
    • 4.2.4 移动(剪切)目录
      • 使用mv命令对文件或者目录进行重命名时,如果源文件和重命名后的文件不在同一个目录下,则实际上是对文件或者目录的移动或者剪切操作。
      • 命令:mv目录名称 目录的新位置
      • 实例:讲根路径下的newTest目录剪切到用户home目录下。
        • mv /newTest ~/newTest
      • 需要注意的是,mv不仅可以剪切目录,也可以剪切文件。
      • 实例:将根路径下的123.txt剪切到用户home目录下。
        • mv /123.txt ~/123.txt
    • 4.2.5 拷贝目录
      • 要拷贝一个目录需要使用cp命令,语法:cp -r 目录名称 拷贝的目标位置。
      • 实例:将用户目录下的newTest拷贝到系统根路径下。
        • cp -r ~/newTest /
      • 需要注意的是,cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不用写-r递归。所以 -r代表递归拷贝的意思,可以将目录内部东西递归拷贝
    • 4.2.6 删除目录
      • 删除目录使用rm命令,删除目录时需要加上-r参数,语法:rm [-rf] 目录名称。
      • 实例:删除用户目录下的newTest目录。
        • rm -r ~/newTest
      • 我们发现在进行删除操作时,需要用户手动进行确认,如果不希望系统给出提示,可以加上-rf参数。
      • 实例:强制删除根路径下的newTest目录。
        • rm -rf ~/newTest
      • rm命令不仅可以删除目录,同时也可以删除文件,为了方便记忆,我们在进行删除操作时,默认加上-rf参数即可。
      • 实例:删除用户目录下的123.txt文件
        • rm -rf ~/123.txt
  • 4.3 文件的操作命令
    • 4.3.1 文件的创建
      • 文件的创建可以使用touch命令,语法:touch 文件名。
      • 实例:在用户目录下创建test.txt文件。
        • cd ~ 返回用户目录
        • touch test.txt 创建文件
    • 4.3.2 文件的查看
      • 在Linux系统中查看文件可以使用cat,more,less.tail命令。
      • 实例:使用cat查看etc下的sudo.conf文件
        • cat /etc/sudo.conf
        • 通过以上的实例发现cat命令默认是现实文件的最后一屏的内容。
      • 实例:使用more查看/etc/sudo.conf文件,,可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看。
        • more /etc/sudo.conf
      • 实例:使用less查看/etc/sudo.conf文件,可以使用键盘上的PgUp和PgDn向上和向下翻页,q结束查看。
        • less /etc/sudo.conf
      • 实例:使用tail -10 查看/etc/sudo.conf文件的后10行。
        • tail -10 sudo.conf
    • 4.3.3 文件内容的修改
      • 在Linux操作系统中药修改文件的内容,可以使用系统自带的vi编辑器,也可以安装其他的文本编辑工具,这里我们使用最基本的vi编辑器进行文件内容的编辑。

      • Vi编辑器的详细使用参照《vi使用方法手册》,我们演示其基本的操作。

      • 实例:使用vi打开用户目录下的test.txt文件

        • vi ~/test.txt
      • 输入命令后出现文本的内容,因为这是新建的文件,所以内容为空白。

      • 直接打开文件后出于命令模式,是无法对内容进行编辑的,如果要进行内容编辑需要切换到编辑模式下,只需要按一下i键即可。之后就可以编辑文件内容了

      • 编辑内容完成以后,需要将修改后的文件保存,此时需要首先切换到命令模式下进行命令操作,需要按下键盘的esc键,退出编辑模式进入命令模式。

        • 在命令模式下,输入:wq,w表示保存,q表示退出,结束对文件的编辑。
      • 需要注意的是,如果在修改文件后,不希望保存,而直接退出的话,可以在命令模式下输入:q!表示强制退出。

  • 4.4 压缩和解压缩文件的操作
    • 4.4.1 打包并压缩文件
      • Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般为 .tar.gz。

      • 进行文件的打包压缩使用命令tar,该命令可以添加的参数有一下几个:

        • z:调用gzip压缩命令进行压缩
        • c:打包文件
        • v:显示运行过程
        • f:指定文件名
        • x:调用gzip压缩命令进行解压
      • 实例:将用户目录下的tar目录中的aaa.txt,bbb.txt和ccc.txt进行打包和压缩。

        • tar -zcvf files.tar.gz a.txt b.txt c.txt
        • 然后就压缩成 files.tar.gz文件,原来的abc.txt还存在
    • 4.4.2 解压缩文件
      • 解压缩文件依然使用tar命令,只是不再进行打包,而是进行解压操作,语法:tar –xvf 压缩文件名称
      • 实例:将用户目录的tar目录中的files.tar.gz文件进行解压。
        • tar -xvf files.tar.gz
  • 4.5 Linux的权限命令
    • 权限是Linux中的重要概念,每个文件/目录等都具有权限,通过ls –l(ll)命令我们可以查看某个目录下的文件或目录的权限。
    • 实例:查看用户目录下的文件权限
      • ll
      total 12
      -rw-r--r--. 1 root root    0 Aug 15 07:05 a.txt
      -rw-r--r--. 1 root root    0 Aug 15 07:05 b.txt
      drwxr-xr-x. 2 root root 4096 Aug 15 06:14 day0815
      -rw-r--r--. 1 root root   51 Aug 15 06:29 day0815.txt
      -rw-r--r--. 1 root root  120 Aug 15 07:06 files.tar.gz
      
      • total 总用量

      • 文件类型

        • d:代表目录
        • -:代表文件
        • l:代表链接(类似于window中的快捷方式)
      • 后面的9位分为3组,每3位置一组,分别代表属主的权限,与当前用户同组的用户的权限,其他用户的权限。

        • r:代表权限是可读,r也可以用数字4表示
        • w:代表权限是可写,w也可以用数字2表示
        • x:代表权限是可执行,x也可以用数字1表示
      • 修改文件/目录的权限的命令:chmod命令

      • 实例:修改用户目录下的test.txt的权限为属主有全部权限,属主所在的组有读写权限,其他用户只有读的权限。

        • chmod u=rwx,g=rw,o=r test.txt
        • 也可以写为 chmod 764 test.txt
  • 4.6 Linux的其他命令
    • 4.6.1 查看网络信息
      • 在Linux中要查看网络信息,可以使用ifconfig命令。
      • 实例:查看Linux网络信息。
        • ifconfig
    • 4.6.2 搜索命令
      • 在Linux中药进行搜索操作可以使用grep命令来完成,语法:grep 要搜索的字符串 要搜索的文件。
      • 实例:搜索/usr/sudu.conf文件中包含字符串to的行。
        • grep to /etc/sudo.conf
      • 如果需要加上颜色标记,可以添加–color参数。
        • grep to /etc/sudo.conf --color
    • 4.6.3 find搜索
      • -name :按照文件名查找文件(精确查找)
      • 实例:搜索所有的mysql文件夹
        • find -name mysql
      • -iname不区分文件名大小写进行查找
      • 实例:搜索所有的mysql文件夹(忽略大小写)
        • find -iname mysql
      • 通配符模糊查询
        • *表示 通配任意的字符;
        • ?表示通配任意的单个字符;
        • []表示通配括号里面的任意字符;[]里面的内容会被解析成单个字符
      • 正则表达式查找
        • !: 非条件
        • -a: 与条件(-and)
        • -o: 或条件(-or)
        • -not: 非条件(与!相同)
      • 实例: 查询所有文件名包含my的文件
        • find -name “*my*”;
    • 4.6.4 查看进行命令
      • 查看系统进程使用ps –ef命令。
      • 实例: 查看当前系统中运行的进程信息
        • ps -ef
    • 4.6.5 管道命令
      • 管道命令可以将前一个命令的输出作为本次目录的输入来使用。
      • 实例:查看当前系统中所有的进程中包括system字符串的进程
        • ps -ef | grep system
          • 这里是相当于对查看进行命令的结果进行了一次筛选
      • 管道命令比较常用
    • 4.6.6 杀死进程
      • 在Linux中要杀死进程可以通过进程号来杀死进程,语法:kill -9 进程号
      • 如果要根据进程的名称杀掉进程,可以使用pkill -9 进程名称

5.jdk、mysql、tomcat安装

  • 5.1 在这些程序的安装中会遇到各种各样的问题,每个人问题都不同,所以这里就不写安装教程了,有文档,和百度都能搜到。
2019-11-14 11:00:03 qq_39728668 阅读数 27
  • C语言嵌入式Linux编程7期:Linux内核常用的数据结构...

    学习嵌入式一段时间了,开始学习Linux内核、驱动了,发现看不懂?看内核代码还是感觉很吃力,云里雾里? 本期课程主要侧重于数据结构基本功的学习和Linux内核中的面向对象思想。掌握了这两项技能,再去分析Linux内核中复杂的子系统和驱动代码,相信你会跟以前有不一样的体验和收获。

    619 人正在学习 去看看 王利涛

01

Linus Torvalds

 

Linus Torvalds两次改变了技术,第一次是Linux内核,它帮助互联网的发展;第二次是Git,全球开发者使用的源代码管理系统。在一次TED的采访中,Torvalds以极其开放的态度讨论了他独特的工作方式和性格特点。Torvalds说:“我不是一个空想家,我是一名工程师,我非常乐意跟梦想家在一起,他们行走四方,仰望苍穹,看着满天星辰说,“我想到那儿去。”但我是低头看路的那种人,我只想填好眼前这个坑,不让自己掉进去,这就是我。”

 

 

02

关于开源

 

Linus Torvalds

Linux并不是一个合作的产物,它是我一系列项目中的一个,纯粹出于自己当时的需要,部分原因是我需要得到结果,但更重要的原因是我享受编程。这段旅程的终点,在25年后的今天(2016),我们仍未达到。当年我只是想做一个完全属于自己的项目,我压根就没想过开源这件事。但在那之后,随着项目越来越大, 你会开始想让别人知道。感觉就像“哇,快来看看我的成果!”

 

成千上万的人想参与进来(Linux内核项目),但很多时候,我成为了那个断点,我无法让自己跨出那一步,同上千人合作。

 

因此Git是我的第二个大项目,它存在的意义就是维护我的第一个大项目。事实上这就是我的工作方式。我编程并不是为了… ,我编程是因为好玩,但我也想做一些有意义的事情,因此我设计每一个程序仅仅是因为我自己需要。

 

而我喜欢开源软件的一点就是,它能让形形色色的人在一起合作。我们不必相互喜欢,有时候我们甚至互相讨厌。是真的,我们经常吵得不可开交。

 

科学界的开源显然是一种回归,科学最初是开源的。但之后变得越来越封闭,只存在那些昂贵的科学期刊上。开源让科学回归了,我们有了arXiv和开放期刊。

 

小编有话说

Linux并不是选择了开源,只是因为开源恰好是Linux需要的。就如Linus Torvalds所说:“纯粹出于自己当时的需要。”

Linus Torvalds是睿智的,做好自己能控制的。

开源不仅仅代表源代码的开放,开源更是一种工作方式,一种教育方式。因为有了开源,我们多了一种更好的合作共赢的工作方式;因为有了开源,让更多从业者和学生能够学习到更好的技术。

 

 

03

代码的品味

 

Linus Torvalds

有时候你可以换个角度看问题,重写代码,排除特例,完美覆盖所有情况,这就是好的代码。同时也很简单,这是最基本的原则。细节非常重要。对我来说,我愿意与之共事的人,必须有好的品位。

 

采访中Linus Torvalds对比了以下2个函数:

 

 

小编有话说

大牛们总是对自己严格要求,不仅仅是要实现功能,并且要优雅的实现。下面我们来看看采访中Linus Torvalds对比的两段代码:

1. 不怎么漂亮的代码

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
remove_list_entry(entry){    prev = NULL;    walk = head;
    // Walk the list
    while (walk != entry)    {        prev = walk;        walk = walk->next;    }        // Remove the entry by updating the     // head or the previous entry    if(!prev)    {        head = entry->next;    }    else    {        prev->next = entry->next;    } }

上面的代码,需要区分要移除的成员是否为链表的头一个成员。需要单独处理特例情况(要移除的成员为链表的头一个成员)。这个函数比较好理解,这里小编就不做更多的解释了,如有疑问,请添加小编微信交流。

 

2. 好的代码

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
remove_list_entry(entry){    // The "indirect" pointer points to the    // *address* of the thing we'll update    indirect = &head;
    // Walk the list, looking for the thing that    // points to the entry we want to remove     while ((*indirect) != entry))    {        indirect = &(*indirect)->next;    }
    // .. and just remove it    *indirect = entry->next;}

这个代码完全不需要单独处理特例情况,程序整体更加整洁、优雅。其实现原理为:指针变量indirect保存的是链表成员结构体中的next成员的地址(head指针也可这样看),如下图所示:

所以变量*indirect就相当于是前一个链表成员的next成员(相对于要移除的成员来说)。当找到要移除的成员后,进行如下操作即可:

  •  
*indirect = entry->next;
2018-03-18 10:53:44 YReny1 阅读数 166
  • C语言嵌入式Linux编程7期:Linux内核常用的数据结构...

    学习嵌入式一段时间了,开始学习Linux内核、驱动了,发现看不懂?看内核代码还是感觉很吃力,云里雾里? 本期课程主要侧重于数据结构基本功的学习和Linux内核中的面向对象思想。掌握了这两项技能,再去分析Linux内核中复杂的子系统和驱动代码,相信你会跟以前有不一样的体验和收获。

    619 人正在学习 去看看 王利涛
1、Linux的基本概况


Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多cpu的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。


Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。




2、Linux系统的最初十年






简单的说LInux的雏形是由于一个名叫Linus Torvalds的芬兰大学生想要了解intel的cpu386,他认为比较好的学习方法就是自己编写一个操作系统的内核。处于这种目的,加上他对当时Unix 变种版本(即Minix)对于80386类机器的脆弱支持十分不满,他决定要开发出一个全功能的、支持POSIX标准的、类Unix的操作系统内核,该系统吸收了BSD和System V的优点,同时摒弃了它们的缺点。


 Linux 操作系统的诞生、发展和成长过程依赖于以下五个重要支柱:


  UNIX 操作系统、    MINIX操作系统、      GNU 计划、       POSIX 标准 、   Internet 网络。 






Unix操作系统:


   UnixX 操作系统是美国贝尔实验室的Ken.Thompson和Dennis Ritchie 于1969 年夏在DEC PDP-7 小型计算机上开发的一个分时操作系统。当时使用的是BCPL 语言(基本组合编程语言),后经Dennis Ritchie 于1972 年用移植性很强的C语言进行了改写,使得UNIX 系统在大专院校得到了推广。


Minix操作系统:


           MINIX 系统是由Andrew S. Tanenbaum(AST)开发的。AST 是在荷兰Amsterdam 的Vrije 大学数学与计算机科学系统工作,是ACM 和IEEE 的资深会员。 作为一个操作系统,MINIX 并不是优秀者,但它同时提供了用C语言和汇编语言编写的系统源代码。这是第一次使得有抱负的程序员或hacker 能够阅读操作系统的源代码。
GNU 计划:
  GNU 计划和自由软件基金会FSF(the Free Software Foundation)是由Richard M. Stallman 于1984 年一手创办的。旨在开发一个类似UNIX 并且是自由软件的完整操作系统:GNU 系统
各种使用Linux 作为核心的GNU 操作系统正在被广泛的使用。虽然这些系统通常被称作"Linux",但是Stallman 认为,严格地说,它们应该被称为GNU/Linux系统。
        到上世纪90 年代初,GNU 项目已经开发出许多高质量的免费软件,其中包括有名的emacs 编辑系统、bash shell 程序、gcc 系列编译程序、gdb 调试程序等等。这些软件为Linux 操作系统的开发创造了一个合适的环境。这是Linux 能够诞生的基础之一,以至于目前许多人都将Linux 操作系统称为“GNU/Linux”操作系统。
 POSIX 标准:
      POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准。该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口。用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植和运行。
在90 年代初,POSIX 标准的制定正处在最后投票敲定的时候,那是1991-1993 年间。此时正是Linux刚刚起步的时候,这个UNIX 标准为Linux 提供了极为重要的信息,使得Linux 能够在标准的指导下进行开发,并能够与绝大多数UNIX 操作系统兼容。在最初的Linux 内核源代码中(0.01 版、0.11 版)就已经为Linux 系统与POSIX 标准的兼容做好了准备工作。


Internet 网络:
          Internet是linux开发、交流、发展的信息和资源的交流平台。


3、Linux的特点、优势及发行版本        


 Linux的特点:       


     开放性:挃系统遵循丐界标准规范,特别是遵循开放系统互连(OSI)国际标准。


  多用户:是挃系统资源可以被丌同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互丌影响。


  多任务:它是挃计算机同时执行多个程序,而丏各个程序的运行互相独立。


  良好的用户界面:Linux向用户提供了两种界面:用户界面和系统调用。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚劢条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。


  设备独立性:是挃操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱劢程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而丌必知道它们的具体存在形式。Linux是具有设备独立性的操作系统,它的内核具有高度适应能力。


  提供了丰富的网络功能:完善的内置网络是Linux一大特点。


  可靠的安全系统:Linux采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。


  良好的可移植性:是挃将操作系统从一个平台转移到另一个平台使它仍然能挄其自身的方式运行的能力。Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行


Linux系统的优势:


  Linux系统优势一:跨平台的硬件支持


  Linux系统优势二:丰富的软件支持


  Linux系统优势三:多用户多任务


  Linux系统优势四:可靠的安全性


  Linux系统优势五:良好的稳定性


  Linux系统优势六:完善的网络功能






Linux系统的发行版本:












1.RHEL红帽          


      Redhat,应该称为Redhat系列,包括


           (1)RHEL  (Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本,稳定性非常好,适合服务器使用)


           (2)Fedora Core  (由原来的Redhat桌面版本发展而来,免费版本,稳定性较差,最好只用于桌面应用)


           (3)CentOS  (RHEL的社区克隆版本,免费版本,稳定性非常好,适合服务器使用)






2. CentOS       


       社区企业操作系统(Community Enterprise Operating System,Centos)


         CentOS 是RHEL源代码再编译的产物,而且在RHEL的基础上修正了不少已知的 Bug ,相对于其他 Linux 发行版,其稳定性值得信赖。






 3.Fedora        


        由全球社区爱好者构建的面向日常应用的快速且强大的操作系统。它允许任何人自由地使用、修改和重发布,无论现在还是将来。它由一个强大的社群开发,这个社群的成员以自己的不懈努力,提供并维护自由、开源代码的软件和开放的标准。Fedora 项目由 Fedora 基金会管理和控制,得到了 Red Hat 的支持。Fedora (第七版以前为Fedora Core)是一款基于 Linux 的操作系统,也是一组维持计算机正常运行的软件集合。其目标是创建一套新颖、多功能并且自由和开源的操作系统。






 4.OpenSUSE  


      德国著名的Linux系统,全球范围内有着不错的声誉及市场占有率,发行量在欧洲占第一位。。OpenSUSE对个人来说是完全免费的,包括使用和在线更新。OpenSUSE被评价为最华丽的Linux桌面发行版,甚至超越win7,但它的优势绝不仅仅局限于win7还要绚丽的用户交互界面,其性能也绝不亚于其他Linux桌面发行版!






5.Gentoo     


     它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点。 Gentoo的哲学是自由和选择。得益于一种称为Portage的技术,Gentoo能成为理想的安全服务器、开发工作站、专业桌面、游戏系统、嵌入式解决方案或者别的东西——你想让它成为什么,它就可以成为什么。






 6.Debian       


      Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去。
    分为三个版本分支(branch):
    (1)unstable,为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。
    (2)testing,经过unstable中的测试,相对较为稳定,也支持了不少新技术。
    (3)stable,一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。
 


7.Ubuntu      




       Ubuntu是一款基于Debian派生的操作系统(严格来说不能算一个独立的发行版本),对新款硬件具有极强的兼容能力。  特点是界面非常友好,容易上手,对硬件支持非常全面,是最适合做桌面系统的Linux发行版本,同时Ubuntu也可用于服务器领域。


      Ubuntu的目标在于为一般用户提供一个最新的,同时又相对稳定的主要自由软件构建而成的操作系统。Ubuntu具有强大的社区力量,用户可以方便地从社区获取帮助。
2018-11-01 11:11:38 qianlihongju 阅读数 57
  • C语言嵌入式Linux编程7期:Linux内核常用的数据结构...

    学习嵌入式一段时间了,开始学习Linux内核、驱动了,发现看不懂?看内核代码还是感觉很吃力,云里雾里? 本期课程主要侧重于数据结构基本功的学习和Linux内核中的面向对象思想。掌握了这两项技能,再去分析Linux内核中复杂的子系统和驱动代码,相信你会跟以前有不一样的体验和收获。

    619 人正在学习 去看看 王利涛

小白学习Linux ——理论1

Linux学习目标:
Linux操作系统介绍与安装。
Linux常用命令。
Linux常用软件安装。
Linux网络。
防火墙。
Shell编程等。
LinuxOS介绍与安装*****
Linux OS介绍与安装
Linux是什么? Linux是一套作业系统,不是应用程序。

Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。

Linux版本:
主、次版本为奇数:发展中版本(development)、主、次版本为偶数:稳定版本(stable) EXP:3.10.0-123.el7.x86_64 主版本.次版本.释出版本-修改版本
不过,这种奇数、偶数的编号格式在 3.0 推出之后就失效了。从 3.0 版开始,核心主要依据主线版本 (MainLine) 來开发,开发完后会往下一個主线版本进行。
可以使用『 uname -r 』來查阅核心版本,然后对照下列链接來了解其对应值喔!
https://www.kernel.org/releases.html
Android其实就是Linux核心的一支,只是专门用来针对手机/平板这类的 ARM 机器所设计的。

GNU:GNU’s Not Unix 自由软件工程项目
Shell:命令行解释器,遵循一定的语法将输入的命令加以解释并传给系统。默认bash

Linux中,每个硬件设备都被当成一个文件!EXP:IDE硬盘文件名称/dev/da[a-d];硬盘分区名称/dev/hda1,/dev/hda2…数字表示硬盘内的某个分区。
IDE硬盘 /dec/hd[a-d]
SCSI硬盘与串口硬盘、U盘 /dev/sd[a-p]
光驱/dev/cdrom 软驱/dev/fd[0-1] 打印机 /dev/lp[0-2] 鼠标/dev/mouse 磁带机/dev/ht0(IDE) /dev/st0(SCSI)

硬盘分区的特点:
最多可以有4个primary分区!
只能有一个extended分区!
extended存在的目的是为了创建logical!
创建logical的目的是能有多于4个分区,logical最多可以有64个!
primary(主分区)+extended(扩展分区)最多有四个。
Logical(逻辑分区)的数字代号必从5开始 Primary=P;Extended=E;Logical=L P+E+L+L:/dev/hda1,/dev/hda2,/dev/hda5,/dev/hda6

Linux的硬盘分区需求:
Linux可以安装在硬盘分区里面任意一个或对各可以写数据的硬盘分区。最少有两个分区
/:根分区,linux操作系统的文件夹,相当于windows系统的windows目录
/boot:启动分区,里面装在linux内核及开机引导程序grub,用于开机引导,100~200M
/usr:相当于windows的应用程序目录programe files
/home:linux各个用户的家目录:用户登录后进入的目录,自己的目录
/var:可变目录,放日志等经常会发生变化的文件
Swap:交换分区,相当于windows的虚拟内存文件,内存大小的2倍
bash 是一个为GNU计划编写的Unix shell。

Vmware 是一种虚拟机,可以用来安装windows,也可以安装linux ,ubuntu是Linux的发行版之一,另外的Linux发行版有红帽,Linux mint 等等,linux秉承开源性,在嵌入式领域和服务器领域有很多使用实例,包括目前流行的安卓,也使用到了Linux.

如果是初学Linux,可以安装虚拟机VM。然后再VM上安装Ubuntu或者自己要学的Linux的版本。Linux安装 记得分配硬盘内存

Linux基本命令******
Linux基本命令:
Linux控制台版本不同数量可能不一样 Ctrl+Alt+F1~Ctrl+Alt+F8 1~6为不同的控制台,7可以从控制台切换回图形界面。如果Linux版本是无法手动切换回来的话。

针对所有系统用户的命令和设置:/etc/bashrc

shellrich@userdesktop: 字符 shell在等待用户输入 rich@user-desktop:~ rich(shell用户名) user-desktop(虚拟控制台编号) ~主目录的缩略资源

    man命令用来访问存储在Linux系统上的手册页面:$ man bash ->看完用q退出

Linux将文件存储在单个目录结构中,这个目录我们称之为虚拟目录。
Linux会在根驱动器上创建一些特别的目录,我们称之为挂载点。文件和目录在挂载点中,但实际存储在其他位置。

目录结构以及文件权限

d:开始为d,表示目录 directory
d: 表示文件夹

  • : 开始为-,表示普通的二进制文件
    l : 开始为l,表示软连接文件(link)

r: read 读权限。 w:write 写权限。 x:execute 执行权限。
Linux中的文件如:drwxr-xr-x 可以看做三个部分(rwx r-x r-x),分别是文件的所有者rwx(user)的权限、所属组r-x(group)的权限和其他人r-x(others)的权限。
修改文件权限
drwxr-xr-x 2 root system 256 Jan 10 2014 123
-rw-r----- 1 root system 247993991 Sep 15 2017 V100709-01.zip
drwxr-xr-x 2 db2inst2 db2iadm1 4096 Jun 26 12:17 autobak

#chmod 755 V100709-01.zip 修改V100709-01.zip的读写权限
#chown db2inst2 V100709-01.zip 修改V100709-01.zip的所有者

命令:chgrp
语法:chgrp group 文件
描述:改变文件的所属组
示例:chgrp adm t1.sh
查看系统默认的权限 :umask -S (umask查看权限掩码值022 使用777-022得到真实权限)

Linux目录名称
/虚拟目录的根目录,不放文件。
/bin位进制目录,存放许多GNU用户级的工具
/boot启动目录,存放启动文件
/dev设备目录,Linux在这里创建节点
/etc 系统配置文件目录
/home主目录,Linux在这里创建用户目录
/lib 库目录,存放系统和应用程序的库文件
/media
/mnt挂载目录
/opt 可选目录
/root 根主目录
/var 可变目录
/sbin 系统二进制目录
/tmp临时目录
/usr 用户安装软件目录

Linux常用命令
要想从命令行界面下在Linux的虚拟目录之间切换,需要使用cd命令。
ls 显示系统上有哪些文件
$ls 显示当前目录下的文件和目录
$ ls -F 区分文件
$ ls -a 显示隐藏文件

touch命令创建文件: touch 文件名 生成一个空文件或更改文件的时间
cp命令复制文件: cp 源对象 目标对象
ln 建立链接文件
命令:ln(link)
语法:ln -s [源文件] [目标文件] (硬链接则不需要-s选项)
描述:创建软链接文件

软链接特点:权限是所有人都可以访问,并且软连接文件指向源文件。
软链接就像windows系统中的快捷方式一样,特点也都类似。
硬链接:类似copy,硬链接大小和源文件一样,并且是同步更新的。

另外:硬链接不能跨文件系统分区,而软连接可以。

wc 统计指定文本文件行数、字数、字符数
cat、tac 显示文本文件内容
more 分页显示文本文件内容(使用空格进行翻页,回车显示下一行,q退出(或者ctrl+c))
head、tail 显示文本文件的前若干行或后若干行
grep 查找一个文本文件中的某个字符,类似于ctrl+f
mv 重命名 :mv 源 目的
touch 文件名 创建文件名
硬链接:创建新文件 软链接:创建符号链接
rm 删除文件: rm -i 文件 删除前提示 rm -f 文件 强制删除 不提示
mkdir 创建目录
rmdir(只能删除空目录)
rm dir1
rm -rf dir2 暴力删除
stat *** 查看某文件所有状态 file **查看文件类型
ps 显示在运行进程 -e 所有进程 -f 详细信息 -ef组合 -H显示层级关系
top 实时监测进程 i 是否切换到空闲进程 u显示某个用户的进程 W把当前设置写到配置文件 q退出
kill num结束进程 killall http

mount 输出挂载程序信息
umount 移除一个可移动设备
df 显示磁盘剩余空间 du特定目录的磁盘使用情况
sort *** 排序
useradd testuser 增加用户
userdel testuser 删除用户
passwd testuser 添加testuser用户的密码
fdisk -l 查看磁盘信息

启动ftp服务
service vsftpd start
关闭防火墙
service iptables stop
chkconfig iptables off

命令:find
语法:find [搜索范围路径] -name 【文件名称】(根据文件名查找)
find [搜索范围路径] -size [(±)文件大小] (根据文件大小查找,大于+ 小于-)
find [搜索范围路径] -user(文件的所有者)
find [时间查找] [以天为单位]
[以天为单位] 1 ctime、atime、mtime
[以分钟为单位] 2 cmin、amin、mmin
。。。。。
描述:查找任何文件或目录(所有)
find命令示例:find [搜索范围路径] -name

匹配任意字符 *

匹配指定字符 ?

find [搜索范围路径] -size [±文件大小] (根据文件大小查找,大于+小于-)
注意,对于文件的大小是以数据块为单位。数据块大小是512bit
形如:如需查找100M的文件,那么就要知道100M为多少block?
100M = ? block
1M = 1024K
100M = 102400K
1K = 2 block
100M = 2*102400 block

2015-12-12 21:10:17 u010889390 阅读数 287
  • C语言嵌入式Linux编程7期:Linux内核常用的数据结构...

    学习嵌入式一段时间了,开始学习Linux内核、驱动了,发现看不懂?看内核代码还是感觉很吃力,云里雾里? 本期课程主要侧重于数据结构基本功的学习和Linux内核中的面向对象思想。掌握了这两项技能,再去分析Linux内核中复杂的子系统和驱动代码,相信你会跟以前有不一样的体验和收获。

    619 人正在学习 去看看 王利涛

Linux简介

  • Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
  • Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。
  • Linux 是一个类似 Unix 的操作系统,Unix 是闭源收费的,Linux 是开源免费的,Unix 要早于 Linux,所以 Linux 的开发者也模仿了 Unix(但并没有包括Unix源码),使得Linux在外观和操作上与 Unix 非常相似

Linux文件系统

Linux中所有的数据都保存在文件中,所有的文件都保存在不同的目录中

普通文件

普通文件是以字节为单位的数据流,包括文本文件、源码文件、可执行文件等。文本和二进制对Linux来说并无区别,对普通文件的解释由处理该文件的应用程序进行

目录文件

目录可以包含普通文件和特殊文件,目录相当于Windows和Mac OS中的文件夹。

设备文件

Linux与外部通讯是通过一个被称为设备文件来通讯的,Linux 输入输出到外部设备的方式和输入输出到一个文件的方式是相同的。Linux 和一个外部设备通讯之前,这个设备必须首先要有一个设备文件存

例如,每一个终端都有自己的设备文件来供 Linux 写数据(出现在终端屏幕上)和读取数据(用户通过键盘输入)。

命令查看文件:比较基础的命令这里只会列举一部分

  • 查看当前目录的文件

    $ls
    
  • 查看更多文件信息ls -l

    sh-3.2# ls -l
    total 24
    -rw-r--r--@  1 tongkun  staff    21 12  4 23:35 Makefile
    -rw-r--r--@  1 tongkun  staff  3443 12  4 23:35 README.md
    drwxr-xr-x@  5 tongkun  staff   170 12  4 23:35 charsets
    drwxr-xr-x@  9 tongkun  staff   306 12  4 23:35 docs
    -rw-r--r--   1 root     staff    89 12  5 23:46 dump.rdb
    drwxr-xr-x@ 48 tongkun  staff  1632 12  4 23:35 examples
    drwxr-xr-x@  8 tongkun  staff   272 12  4 23:35 include
    drwxr-xr-x@ 11 tongkun  staff   374 12  4 23:35 masks
    drwxr-xr-x@  3 tongkun  staff   102 12  5 23:20 obj
    drwxr-xr-x@ 25 tongkun  staff   850 12  4 23:35 rules
    drwxr-xr-x@  4 tongkun  staff   136 12  4 23:35 salts
    drwxr-xr-x@ 22 tongkun  staff   748 12  4 23:35 src
    drwxr-xr-x@  8 tongkun  staff   272 12  4 23:35 tables
    drwxr-xr-x@ 11 tongkun  staff   374 12  4 23:35 tools
    

    每一列的文件说明:

    1. 第一列:文件类型
      • - 普通文件。如文本文件、二进制可执行文件、源代码等。
      • b 块设备文件。硬盘可以使用块设备文件。
      • c 字符设备文件。硬盘也可以使用字符设备文件。
      • d 目录文件。目录可以包含文件和其他目录。
      • l 符号链接(软链接)。可以链接任何普通文件,类似于 Windows 中的快捷方式。
      • p 具名管道。管道是进程间的一种通信机制。
        s 用于进程间通信的套接字。
    2. 第二列:表示文件个数。如果是文件,那么就是1;如果是目录,那么就是该目录中文件的数目
    3. 第三列:文件的所有者,即文件的创建者。
    4. 第四列:文件所有者所在的用户组。在Linux中,每个用户都隶属于一个用户组
    5. 第五列:文件大小(以字节计)。
    6. 第六列:文件被创建或上次被修改的时间。
    7. 第七列:文件名或目录名。

文件权限和访问模式

为了安全存储,Linux为不同的文件赋予不同的权限,每个用户都有下列三个权限:

  • 所有者权限:文件所有者能够操作
  • 组织权:文件所属用户组能够进行操作
  • 外部权限:其他用户可以进行操作
查看文件权限
sh-3.2# pwd
/Users/tongkun/Documents/Hexo
sh-3.2# ls -l
total 176
-rw-r--r--@  1 tongkun  staff   8196 12  2 08:05 .DS_Store
drwxr-xr-x  13 root     staff    442 12  5 22:38 .deploy_git
-rw-r--r--   1 root     staff     65 11 29 21:11 .gitignore
-rw-r--r--   1 root     staff   2485 12  5 22:33 _config.yml
-rw-r--r--   1 root     staff  59402 12  5 23:21 db.json
-rw-r--r--   1 root     staff     18 12  3 13:02 dump.rdb
drwxr-xr-x  14 tongkun  staff    476 12  2 08:21 node_modules
-rw-r--r--   1 root     staff    482 12  2 08:21 package.json
drwxr-xr-x  12 root     staff    408 12  5 22:38 public
drwxr-xr-x   5 root     staff    170 11 30 08:22 scaffolds
drwxrwxrwx   7 root     staff    238 12  1 10:50 source
drwxr-xr-x   7 root     staff    238 12  1 10:26 themes

第一列的字符可以分为三组,每一组有三个,每个字符都代表不同的权限,分别为读取(r)、写入(w)和执行(x)

  • 第一组字符(2-4)表示文件所有者的权限,-rwxr-xr– 表示所有者拥有读取(r)、写入(w)和执行(x)的权限。
  • 第二组字符(5-7)表示文件所属用户组的权限,-rwxr-xr– 表示该组拥有读取(r)和执行(x)的权限,但没有写入权限。
  • 第三组字符(8-10)表示所有其他用户的权限,rwxr-xr– 表示其他用户只能读取(r)文件
改变权限

可以使用chmod(change mode)命令来改变文件或者目录的访问权限,权限可以使用符号或者数字来表示

Linux网络通讯工具

ping命令

ping 命令的语法是:

ps:ping hostname or ipaddress
$ping www.baidu.com    
ftp工具

ftp是File Transation protocol,称为文件传输协议,通过ftp工具,能够将文件传输到远程服务器,也可以从远程服务器上下载文件。

ftp有自己的命令:

$ftp hostname or ip-address

接下来会提示输入用户名和密码,验证成功后进入目录,然后就可以使用ftp工具的命令进行操作。

ftp命令 说明
put file 将本地文件上传到主机
getfile 将远程文件下载到本地
prompt off 关闭文件提示
prompt on 打开文件提示
dir 列出远程主机上的所有文件
quit 退出目录

注意,所有的上传和下载都是针对本地主机和远程主机的当前目录,如果你希望上传指定目录下的文件,首先要 cd 到该目录,然后才能上传

未完待续。。。


Linux

阅读数 41

初始Linux

阅读数 193

linux介绍

阅读数 115

Linux系统

阅读数 25

没有更多推荐了,返回首页