5关于Linux知识杂物箱

  • 1、软件移植
  • 2、相容分时系统(CompatibleTime-Sharing System, CTSS)
  • 3、GNU C Compiler(gcc)
  • 4、GPL(GNU General Public License, GPL)
  • 5、专属软件/专利软件 (close source)
  • 6、Linux的核心版本
  • 6、Linux Distributions支持标准
  • 7、distributions系统分类
  • 8、Linux企业环境的利用
    • 8.1 网络服务器
    • 8.2 个人环境的使用
    • 8.3 云端运用
  • 9、学习建议
    • 9.1 书籍基础知识
    • 9.2 实践与笔记
    • 9.3 发生问题怎么处理
  • 10、多用户 ( Multi-user ) 多任务 ( Multitask )

1、软件移植

将某个可执行的程序,由它原先的环境中,迁移到另一个环境,让它可以重新运作。改变的环境可能是硬件或软件,包括处理器架构、操作系统、软件库等。
是当你进行软件移植时,需要重新改写的源代码越少,需要做的工时越少,这个软件的可移植性就越高。

2、相容分时系统(CompatibleTime-Sharing System, CTSS)

它可以让大型主机通过提供数个终端机(terminal)以连线进入主机,来利用主机的资源进行运算工作。 架构有点像这样:

可以让多个使用者在某一段时间内分别使用CPU的资源, 感觉上你会觉得大家是同时使用该主机的资源!事实上,是CPU在每个使用者的工作之间进行切换。

Thompson 的这个文件系统有两个重要的概念,分别是:
所有的程序或系统设备都是文件
不管建构编辑器还是附属文件,所写的程序只有一个目的,且要有效的完成目标。

3、GNU C Compiler(gcc)

编辑器:Emacs则是一个很棒的编辑器!注意!是编辑(editor)而非编译(compiler)!如果写错时,可以很快的立刻显示出你写入的语法可能有错误的地方。
不论是什么软件,都得要进行编译成为二进制文件(binary program)后才能够执行,于是就出现了相当有名的GNU C Compiler(gcc)!

GNU所开发的几个重要软件,如:
Emacs
GNU C (GCC)
GNU C Library (glibc)
Bash shell

4、GPL(GNU General Public License, GPL)

为了避免GNU所开发的自由软件被其他人所利用而成为专利软件, 所以他与律师草拟了有名的通用公共许可证(General Public License, GPL), 并且称呼他为copyleft(相对于专利软件的copyright!)
source code是程序发展者写出的原始程序码, OpenSource就是,软件在发布时,同时将作者的源代码一起公布的意思!
Free Software(自由软件)是一种自由的权力,并非是“价格!” 举例来说,你可以拥有自由呼吸的权力、你拥有自由发表言论的权力, 但是,这并不代表你可以到处喝“免费的啤酒!(free beer)”,也就是说, 自由软件的重点并不是指“免费”的,而是指具有“自由度,freedom”的软件, 史托曼进一步说明了自由度的意义是: 使用者可以自由的执行、复制、再发行、学习、修改与强化自由软件

一个软件挂上了GPL版权宣告之后,他自然就成了自由软件!自由软件的特色:
取得软件与源代码:你可以根据自己的需求来执行这个自由软件;
复制:你可以自由的复制该软件;
修改:你可以将取得的源代码进行程序修改工作,使之适合你的工作;
再发行:你可以将你修改过的程序,再度的自由发行,而不会与原先的撰写者冲突;
回馈:你应该将你修改过的程序码回馈于社群!
但请特别留意,你所修改的任何一个自由软件都不应该也不能这样:
修改授权:你不能将一个GPL授权的自由软件,在你修改后而将他取消GPL授权。
单纯贩卖:你不能单纯的贩卖自由软件。

该软件的授权必须要符合下面的基本需求,才可以算是 open
source
的软件。
公布源代码且用户具有修改权:用户可以任意的修改与编译程序码,这点与自由软件差异不大;
任意的再散佈:该程序码全部或部份可以被贩售,且程序码可成为其他软件的元件之一,作者不该宣称具有拥有权或收取其他额外费用。
必须允许修改或衍生的作品,且可让再发布的软件使用相似的授权来发表即可。
承上,用户可使用与原本软件不同的名称或编号来散布。
不可限制某些个人或团体的使用权
不可限制某些领域的应用:例如不可限制不能用于商业行为或者是学术行为等特殊领域等等。
不可限制在某些产品当中,亦即程序码可以应用于多种不同产品中。
不可具有排他条款,例如不可限制本程序码不能用于教育类的研究中,诸如此类。
根据上面的定义,GPL 自由软件也可以算是开源软件的一个,只是对于商业应用的限止稍微多一些而已。

5、专属软件/专利软件 (close source)

相对于Open Source的软件会释出源代码,Close source的程序则仅推出可执行的二进制程序(binary program)而已。 这种软件的优点是有专人维护,你不需要去更动他;缺点则是灵活度大打折扣,使用者无法变更该程序成为自己想要的样式! 此外,若有木马程序或者安全漏洞,将会花上相当长的一段时间来除错!这也是所谓专利软件(copyright)常见的软件出售方式。
Freeware:不同于Free software,Freeware为“免费软件”而非“自由软件!”虽然它是免费的软件,但是不见得要公布其源代码。
Shareware: 共享软件,在使用初期,它也是免费的,但是, 到了所谓的“试用期限”之后,你就必须要选择“付费后继续使用”或者“将它移除”的宿命。 通常,这些共享软件都会自行撰写失效程序,让你在试用期限之后就无法使用该软件。

POSIX是可携式操作系统接口(Portable Operating System Interface)的缩写,重点在规范核心与应用程序之间的接口, 这是由美国电器与电子工程师学会(IEEE)所发布的一项标准。

6、Linux的核心版本

Linux的核心版本编号有点类似如下的样子:

3.10.0-123.el7.x86_64
主版本.次版本.释出版本-修改版本

奇数、偶数版本分类(在 2.6.x 版本以前
主、次版本为奇数:发展中版本(development) 如2.5.xx,这种核心版本主要用在测试与发展新功能,所以通常这种版本仅有核心开发工程师会使用。 如果有新增的核心程序码,会加到这种版本当中,等到众多工程师测试没问题后,才加入下一版的稳定核心中;
主、次版本为偶数:稳定版本(stable) 如2.6.xx,等到核心功能发展成熟后会加到这类的版本中,主要用在一般家用计算机以及企业版本中。 重点在于提供使用者一个相对稳定的Linux作业环境平台。

主线版本(从 3.0 版开始)
核心主要依据主线版本 (MainLine) 来开发,开发完毕后会往下一个主线版本进行。
而旧的版本在新的主线版本出现之后,会有两种机制来处理,一种机制为结束开发 (End ofLive, EOL),亦即该程序码已经结束,不会有继续维护的状态。 另外一种机制为保持该版本的持续维护,亦即为长期维护版本 (Longterm)!例如 3.10 即为一个长期维护版本,这个版本的程序码会被持续维护,若程序码有 bug 或其他问题, 核心维护者会持续进行程序码的更新维护。
判断你的 Linux 核心是否为长期支持的版本, 可以使用“ uname -r ”来查阅核心版本,然后对照下列链接来了解其对应值。
https://www.kernel.org/releases.html.
这个“Kernel + Softwares + Tools + 可完整安装程序”的咚咚,我们称之为Linux distribution, 一般中文翻译成可完整安装套件,或者Linux发布商套件等。

6、Linux Distributions支持标准

不过,由于发展Linux distributions的社群与公司实在太多了,例如在台湾有名的Red Hat,SuSE, Ubuntu, Fedora, Debian等等,所以很多人都很担心,如此一来每个distribution是否都不相同呢? 这就不需要担心了,因为每个Linux distributions使用的kernel都是http://www.kernel.org.所释出的,而他们所选择的软件,几乎都是目前很知名的软件,重复性相当的高, 例如网页服务器的Apache,电子邮件服务器的Postfix/sendmail,文件服务器的Samba等等。
Linux Standard Base (LSB)等标准来规范开发者:http://www.linuxbase.org/.
以及目录架构的File system Hierarchy Standard (FHS)标准规范:http://www.pathname.com/fhs/.

7、distributions系统分类

一种是使用Red Hat系统的RPM方式安装软件的系统,包括Red Hat, Fedora, SuSE等都是这类;
一种则是使用Debian的dpkg方式安装软件的系统,包括Debian, Ubuntu, B2D等等。若是加上商业公司或社群单位的分类,那么我们可以简单的用下表来做个解释。


到底是要买商业版还是社群版的Linux distribution呢?如果是要装在个人计算机上面做为桌面电脑用的,建议使用社群版, 包括Fedora, Ubuntu, OpenSuSE等等。如果是用在服务器上面的,建议使用商业版本,包括Red Hat, SuSE等。 这是因为社群版通常开发者会加入最新的软件,这些软件可能会有一些bug存在。至于商业版则是经过一段时间的磨合后, 才将稳定的软件放进去。

列出几个主要的Linux distributions发行者网址:
Red Hat: http://www.redhat.com.
SuSE: https://www.suse.com.
Fedora: https://getfedora.org/.
CentOS: http://www.centos.org/.
Debian: http://www.debian.org/.
Ubuntu: http://www.ubuntu.com/.
Gentoo: http://www.gentoo.org/.

Linux在台湾
中文Linux 推荐的网站:
自由软件技术交流网:http://freesf.tw/.
B2D:http://b2d-linux.com/.
如果只想看看Linux的话,还可以选择所谓的可光盘开机进入Linux的Live CD版本, 亦即是KNOPPIX这个Linux distributions呢!台湾也有阿里巴巴兄维护的中文Live CD。
http://www.knoppix.net/.
洪老师解释 KNOPPIX: http://people.ofset.org/~ckhung/b/sa/knoppix.php.
你还想要知道更多的Linux distributions的下载与使用信息,可以参考:
http://distrowatch.com/.

8、Linux企业环境的利用

8.1 网络服务器

Dell 公司的 Server 对 OS 的支持度:
http://www.dell.com/support/contents/tw/en/twbsd1/article/Product-Support/Selfsupport-Knowledgebase/enterprise-resource-center/server-operating-system-support.
HP 公司的支持:
http://www8.hp.com/us/en/business-services/it-services.html?compURI=1078888#tab=TAB1.
IBM 公司的支持:
http://www-03.ibm.com/systems/hardware/browse/linux/.
VMWare 的虚拟化支持:
https://www.vmware.com/support/ws55/doc/intro_supguest_ws.html.

8.2 个人环境的使用

桌面电脑:
上网浏览+实时通讯(Skype, FB, Google, Yahoo…);
文书处理;
网络接口之公文处理系统;
办公室软件(Office Software)处理数据;
收发电子邮件;
例如美观的KDE与GNOME窗口接口,搭配可相容微软Office的 OpenOffice / LibreOffice (
https://www.openoffice.org/zh-cn/., https://zhcn.libreoffice.org/.) 等软件。

手持系统(PDA、手机):
Google 成立了开放手机联盟 (Open Handset Alliance),并且推出 Android 手机专用操作系统! 而 Android 其实就是 Linux 核心的一支,只是专门用来针对手机/平板这类的 ARM 机器所设计的。
手机是 Android 系统的话,请拿出来,然后点选“设置”–> “关于(手机)” -->“软件信息”,你就会看到 Android 版本,然后又点选“更多”, 这时你就会看到类似 3.4.10-xxx的代号,就是Linux 版本。

嵌入式系统:玩嵌入式系统必须要很熟悉Linux Kernel与驱动程序的结合才行。

8.3 云端运用

云程序:
除了公司自己内部的私有云之外,许多大型网际网络供应商(ISP) 也提供了所谓的公有云来让企业用户或个人用户来使用 ISP 的虚拟化产品。
端设备:需要连线到云程序的设备。

9、学习建议

9.1 书籍基础知识

1.计算机概论与硬件相关知识: 因为既然想要走Linux这门路,信息相关的基础技能也不能没有啊! 所以先理解一下基础的硬件知识,不用一定要全懂啦!又不是真的要你去组计算机~_, 但是至少要“听过、有概念”即可;
2. 先从Linux的安装与指令学起: 没有Linux怎么学习Linux呢?所以好好的安装起一套你需要的Linux吧!虽然说Linux distributions很多, 不过基本上架构都是大同小异的,差别在于接口的友好度与软件的选择不同罢了! 选择一套你喜欢的就好了,倒是没有哪一套特别好说~
3. Linux操作系统的基础技能: 这些包含了“使用者、群组的概念”、“权限的观念”,“程序的定义”等等,尤其是权限的概念, 由于不同的权限设置会妨碍你的使用者的便利性,但是太过于便利又会导致入侵的可能! 所以这里需要了解一下你的系统。
4. 务必学会vi文书编辑器: Linux的文书编辑器多到会让你数到生气!不过,vi却是强烈建议要先学习的! 这是因为vi会被很多软件所调用,加上所有的Unix like系统上面都有vi,所以你一定要学会才好!
5. Shell与Shell Script的学习: 其实鸟哥上面一直谈到的“命令行”说穿了就是一个名为shell的软件啦!既然要玩命令行,当然就是要会使用shell的意思。 但是shell上面的数据太多了,包括“正则表达式”、“管线命令”与“数据流重导向”等等,真的需要了解比较好呦! 此外,为了帮助你未来的管理服务器的便利性,shell scripts也是挺重要的!要学要学!
6. 一定要会软件管理员: 因为玩Linux常常会面临得要自己安装驱动程序或者是安装额外软件的时候,尤其是嵌入式设备或者是学术研究单位等。 这个时候Tarball/RPM/DPKG/YUM/APT等软件管理员的安装方式的了解,对你来说就重要到不行了!
7. 网络基础的创建: 如果上面你都通过了,那么网络的基础就是下一阶段要接触的咚咚,这部份包含了“IP概念”“路由概念”等等;
8. 如果连网络基础都通过了,那么网站的架设对你来说,简直就是“太简单啦!”
网络书籍推荐:
计算机基础 http://www.study-area.org/compu/compu.htm.
网络基础 http://www.study-area.org/network/network.htm.
相关网络书籍
http://linux.vbird.org/linux_basic/0120howtolinux/0120howtolinux_1.php.

9.2 实践与笔记

安装一个Linux distribution,进行实践。
最有名的学习网站Study-Area:http://www.study-area.org.
鸟哥的私房菜:http://cn.linux.vbird.org/linux_basic/linux_basic.php.

9.3 发生问题怎么处理

在自己的主机/网络数据库上查询How-To或FAQ
其实,在Linux主机及网络上面已经有相当多的FAQ整理出来了!所以,当你发生任何问题的时候,除了自己检查, 或者到上述的实作网站上面查询一下是否有设置错误的问题之外,最重要的当然就是到各大FAQ的网站上查询啰! 以下列出一些有用的FAQ与How-To网站给您参考一下:

Linux自己的文件数据: /usr/share/doc (在你的Linux系统中)
CLDP 中文文件计划 http://www.linux.org.tw/CLDP/
The Linux Documentation Project:http://www.tldp.org/

比较有趣的是那个TLDP(The Linux Documentation Project), 他几乎列出了所有Linux上面可以看到的文献数据,各种How-To的作法等等,虽然是英文的,不过,很有参考价值!
其他网站:
Google: http://www.google.com.tw.
鸟哥网站:http://linux.vbird.org/Searching.php.

举例自行解决疑难杂症:
一般而言,Linux在下达指令的过程当中,或者是log file里头就可以自己查得错误信息了,举个例子来说,当你下达:

[root@centos ~]# ls -l /vbird

由于系统并没有 /vbird 这个目录,所以会在屏幕前面显示:

ls: /vbird: No such file or directory

这个错误讯息够明确了吧!系统很完整的告诉您“查无该数据”! 所以啰,请注意,发生错误的时候,请先自行以屏幕前面的信息来进行 debug(除错)的动作,然后,如果是网络服务的问题时,请到/var/log/这个目录里头去查阅一下 log file(登录文件),这样可以几乎解决大部分的问题了!

讨论区提问:
提问的智慧 http://phorum.vbird.org/viewtopic.php?t=96.
酷学园讨论区:http://phorum.study-area.org.
鸟哥的私房菜馆讨论区:http://phorum.vbird.org.
的Linux社群“酷学园(Study Area, SA):http://phorum.study-area.org/index.php/board,22.0.html.
补充Linux操作系统最底层的数据为“核心(Kernel)”:http://www.kernel.org.

10、多用户 ( Multi-user ) 多任务 ( Multitask )

Multiuser 指的是 Linux 允许多人同时连上主机之外,每个使用者皆有其各人的使用环境,并且可以同时使用系统的资源!
Multitask 指的是多任务环境,在 Linux 系统下, CPU 与其他例如网络资源可以同时进行多项工作, Linux 最大的特色之一即在于其多任务时,资源分配较为平均!

备注:该内容为读书笔记,部分内容收集来源于网络,如有侵权或错误,请联系我整改,谢谢!

5关于Linux知识杂物箱相关推荐

  1. 做项目时用到的linux知识

    最近一个项目上线了,在开发的过程中用到了一些linux知识,感觉收获不小,虽然自己对于linux命令也懂一些,但是真正用到项目中的这还是第一次,现在来总结一下. 1.date 两台服务器的时间不同步了 ...

  2. Android系统--输入系统(一)必备的Linux知识_inotify和epoll

    Android系统--输入系统(一)必备的Linux知识_inotify和epoll 引入 1. 笔记本电脑插入外接键盘,两个键盘都可以使用 a. 键盘即插即用--如何检测键盘的接入和拔出 hotpl ...

  3. My way on Linux - 知识梳理计划

    知识梳理计划图 近期计划把自己学习的工作中用到的Linux知识梳理下,敬请期待. 转载于:https://www.cnblogs.com/thatsit/p/5001724.html

  4. 一些linux知识和http知识

    一些linux知识和http知识 1 yum安装比源码编译安装  有的模块不能自定义安装  只能安装默认的模块进行安装 2 关于php的fastcgi 如果使用fastcgi 那么需要启动服务  如果 ...

  5. linux知识(二)互斥量、信号量和生产者消费者模型

    linux知识(二)互斥量.信号量和生产者消费者模型 一.互斥量 产生原因 二.信号量 生产者消费者模型 一.互斥量 产生原因 使用多线程常常会碰到数据混乱的问题,那么使用互斥量,相当于"加 ...

  6. linux知识(一) 程序、进程与线程

    linux知识(一) 程序.进程与线程 程序 进程 程序如何变成进程? 线程 线程与进程 fork和创建新线程的区别 优点 程序 程序:程序是已编译好的二进制文件,存储在磁盘中,不占用系统资源 程序包 ...

  7. 欢迎关注我的微信公众账号:Linux技巧(微信号:irefactoring),一起学习Linux知识~~~...

    最近很少写博客了,一方面是近期工作比较繁忙,第二是把精力都放在GitHub和读源码去了. 申请了一个微信公众账号:Linux技巧 微信ID:irefactoring(意思是爱重构) ========= ...

  8. 软件测试从业者,Linux知识从入门到玩转(必读)

    好久没用"必读"这两个字了,毕竟没啥内容是所有人都得必读的(当然,测试君这里也只是用了"入门到玩转","精通"可不敢乱用 . 行业新人特别喜 ...

  9. 三万字,100题!Linux知识汇总!

    这篇文章主要介绍了三万字,100题!Linux知识汇总!以及相关的经验技巧,文章约160077字,浏览量243,点赞数7,值得参考! 导读:本文整理了最新的Linux面试题,近3万字,约100道题,分 ...

最新文章

  1. python3环境搭建(利用Anaconda+pycharm+pytorch)
  2. Python中glob.glob的排序问题
  3. python方法重写_python 怎样实现重写
  4. 字体编辑器_FontLab 7 ——字体编辑器
  5. STM32----SysTick实现监控开机时长
  6. 开源公司抱团取暖,讨论如何在云厂商“寄生”下生存
  7. 继去年“技惊四座”之后,腾讯TPG图片格式在应用领域有了新进展
  8. ajax要不要入口函数,Ajax - SegmentFault 思否
  9. 6.看板方法---价值流映射
  10. [转载]VS2005 不能创建 win32 smart device project
  11. python cad 二次开发bom_python处理BOM
  12. @AutoConfigureAfter注解
  13. 产品经理职责和工作内容
  14. 5 月最大的 GameFi 崩溃受害者能否在熊市中生存?| May Monthly Report
  15. ipad如何与计算机连接网络连接不上,苹果平板ipad的无法连接无线网络WiFi如何解决...
  16. 【论文笔记】Reaching agreement in the presence of faults (EIG)
  17. 【OSATE学习笔记】EMV2.aadl详解
  18. 如何将音频变声?试试这几个方法吧
  19. 从键盘输入一个数,判断是否为质数
  20. 谷歌SEO英文外链建设指南

热门文章

  1. 控制台程序源碼-飛行棋
  2. 要远离邪淫否则危害很严重
  3. 使用腾讯地图批量转换地址为经纬度坐标
  4. python dict 写入 json 文件 编码问题
  5. kali破解wifi
  6. Freemarker解决Html代码和 JS代码中单引号和双引号转义问题。
  7. Deepin V20.2网络里没有无线选项以及grup引导界面进不去Windows系统
  8. 【简历】项目管理讲师个人简历(系统集成)
  9. 【字符串石头剪刀布】c++新人教程
  10. Java语法—— Lambda表达式