聚焦Linux:揭秘这个强大的操作系统 (spolight on linux)

Linux操作系统作为一种免费的开源操作系统,被广泛地应用于服务器和个人电脑中。它的稳定性和安全性都是行业标杆,成为了很多企业和开发者的首选。在本文中,我们将聚焦于Linux操作系统,并尝试揭秘这个强大的操作系统。

Linux操作系统的历史

Linux操作系统最初由芬兰的Linus Torvalds开发。他当时是一名学生,为了学习而编写了一个小型操作系统。该操作系统的种子就是Linux操作系统。这个操作系统首先作为开源软件的形式发布,并在互联网上得到了许多开发者的关注和支持。很快,Linux操作系统就成为了免费的开源操作系统,并在不断地演进和发展中逐渐变得越来越强大。

Linux操作系统的开源模式

Linux操作系统的开源模式让所有的开发者都可以参与到Linux的开发和维护中来。Linux社区主要分为两个分支:内核开发社区和发行版社区。

内核开发社区主要负责Linux内核的开发和维护工作。这里有许多专业的内核开发者,他们主要关注于Linux核心的组成,为了更好地管理Linux的资源,以及优化Linux的性能,充分利用计算资源来达到更高效的运行。

发行版社区则负责Linux操作系统的包装和定制。发行版是Linux操作系统最直观的表现形式,发行版社区主要通过封装和更新各种软件包来维护Linux操作系统的不断发展和优化。

Linux操作系统的优势

Linux操作系统有很多优势,让它成为了很多企业和开发者的首选。其主要的优势如下:

稳定性:Linux操作系统非常稳定,并且可以长时间的运行而不需要重新启动。

安全性:Linux操作系统能够提供更好的安全性。它的基本设计结构可以避免大多数的安全问题。此外,许多开发者也对Linux编写了各种安全工具来增强它的安全性。

开发者友好性:Linux操作系统具有很好的开发者友好性。开发者可以随时获取Linux的源代码,并进行修改,以符合自己的需求。

性能优异:Linux操作系统的性能非常优异,尤其在服务器行业中广泛使用,可以为企业带来更好的效益。

Linux操作系统是一个强大的自由和开放源代码操作系统,成为了很多企业和开发者的首选。它的历史,开源模式以及优势都是值得关注和学习的。这个操作系统的稳定性和安全性是行业标杆,其性能优异让它成为了服务器行业的代表。对于很多IT从业者来说,学习和了解 Linux 操作系统,将对工作和职业发展带来极大的帮助。

相关问题拓展阅读:

在Linux机器上安装运行Oracle

摘要 Oracle于去年年底宣布移植Oracle 和Oracle Application Server到Linux 这是一个明确无误的标志 整个世界都应该认识到 Linux已经是一个严肃的操作系统 足以承担企业级的应用 Uche Ogbuji在下文中解释了应该如何安装 配置和初步使用Oracle for Linux 如何在你的Linux机器上安装运行Oracle 一篇实用指导 经过了许多谣传和暗示之后 Oracle于 年 月 日发布了Linux上的Oracle 数据库和Oracle Application Server 这是Linux近期历史中最为耀眼的一幕 无论您个人对Oracle公司的看法如何 该公司在大规模数据应用领域的巨大声誉使这次产品发布成为一个明确 无误的标志 整个世界都应该认识到 Linux已经是一个严肃的操作系统 足以承担企业级的应用 但对于任何真正关心Linux的人来说 各种宣传攻势只是过眼烟云 只有代码才是关键的 (only code matters 译注 事实上 Oracle i 即 for Linux已经开发完成 但其中的erver模块有问题 所以Oracle还没有发布 ) 开始行动 在RedHat上安装Oracle可以是相当轻而易举的 但要是完全跟着Oracle公司的文档走就未必那么容易了 最快的捷径是Tom Bisset的主页 如果您看了Tom的主页 那么您会注意到他漏了JDBC的安装 如果您准备使用JDBC(对于跨平台的Oracle应用十分方便) 只需在安装屏幕要求您选择组件(ponents)时 加上该选项即可 当然 您应该先装好JDK 我个人使用Blackdown的JDK (译注 Redhat包括JDK)然后需要设置oracle用户的ClassPath环境变量 更好的办法是在oracle用户目录的 bash_profile 或 profile中加上一句 CLASSPATH=/usr/lib/jdk/lib/classes zip; export CLASSPATH然后 如果您只需做Web Applet的话 在安装程序 Choose JDBC Components 的时候 选择 JDK JDBC Thin Driver 如果您需要做完整的Java应用 选择 JDK JDBC OCI Driver 另外请注意 安装程序让您输入各口令时 如果口令不符合规范 不会警告 我之一次安装时 口令里加了 这在UNIX中是允许的 Oracle就是另一码事了 直到安装快结束时 程序才告诉我口令有问题 当时为保险 起见 我从头做了一次安装 安装程序的另一个问题是试图往还没有建立的目录里拷贝文件 有必要在安装前 mkdir p /u /app/oracle/product/ /doc/server /install 这一关过后万事大吉 安装成功后 必须以ROOT身份登录 运行root sh 我对root sh作了以下改动 · LBIN环境变量从/usr/lbin改成了/usr/local/bin · 增加环境变量LOG=/tmp/oracle root sh log 这样脚本的运行结果会记录下来 root sh里说到 要想数据库作为一个服务器运行 必须先设定O_TASK变量 但是 事实上如果从安装Oracle的机器上运行root sh 就没有必要设这个变量 Python和Oracle 我配置了一下python(译注 一种强大 快速的面向对象的脚本语言) 以测试Oracle的编程接口和网络接口 在python中要连Oracle 需要Digital Creation(Zope应用服务器的作者)的DCOracle模块 您只需下载软件并按照指示照做就行 如果是DCOracle 使用Setup 的配置 从ORACLE_LIBS变量中删去 lsocket lnsl lgen lelf laio 和 lposix 即可 那些都是Solaris专用的 注意Redhat 和 中安装的 python设置不全 config目录和include目录被省略 无法编译安装第三方的模块 您必须自己编译python或者下载一个合适的RPM 找python的RPM 更好的去处可能是Oliver Andrich的 Python & Linux主页 只要rpm e nodeps python 然后 rpm i python python dev和其他RPM即可 装好python后 我运行了以下的基本查询 访问Oracle $ python Python (# Sep : : ) on linux i Copyright Stichting Mathematisch Centrum Amsterdam >>> import DCOracle >>> #connect to DB scott/tiger are the test database username/password >>> dbc=DCOracle Connect( scott/tiger@sforza ) #sforza is the local Oracle server >>> c = dbc cursor() >>> c execute( SELECT * FROM emp WHERE emp deptno = ) >>> rows = c fetchall() >>> print rows 开发工作站配置 我在数据库服务器以外的一台机器上编译安装了python和其他编程接口 最初 看起来似乎我必须安装Oracle 的所有PRO*C/C++软件包 但要把Oracle安装程序运行到那一步也够麻烦的 所以我不想那样办 于是我找出了写程序所需 要的最小的头文件(include) 对象文件(object)和库文件(library): $ORACLE_HOME/lib/* $ORACLE_HOME/rdbms/demo/* $ORACLE_HOME/rdbms/lib/* 我的机器上设ORACLE_HOME为/usr/local/oracle 注意这些文件还不能让您可以在C程序中直接嵌入SQL语句 只有完整安装PRO*C/C++后才行 如果要用JAVA的话 还得增加$ORACLE_HOME/jdbc/lib/* 注意把这个目录加到ClASSPATH变量中 JDBC连接 为测试JDBC连接 我作了一个小程序 在一个listbox内显示测试库中的所有雇员名 下面的程序 是调用JDBC的java Applet 程序 是调用JAVA程序的HTML超文本 如果您的JDBC已经安装成功 将程序 拷贝为 JDBCTest java 将程序 拷贝为l 然后 javac JDBCTest java appletviewer l 您就可以自己看看结果如何了 程序 /* Applet that reads in several rows from a remote Oracle database and presents them in a listbox */ import java sql *; import java awt *; import java applet *; import java lang *; public class JDBCTest extends Applet { //Single select ListBox private List employee_list = new List( false) public void init() { setLayout(new BorderLayout()); try { //Set up the Oracle JDBC driver DriverManager registerDriver(new oracle jdbc driver OracleDriver()); //Connect to an Oracle database on machine sforza using username // scott and password tiger Connection DB_conn = DriverManager getConnection ( jdbc:oracle:thin:@sforza: :ORCL scott tiger ); //Connection DB_conn = DriverManager getConnection ( jdbc:oracle:thin:scott/tiger@sforza: :ORCL ); //Create a JDBC statement object Statement statement_obj = DB_conn createStatement(); //Execute a query to get the employee names from the test DB ResultSet results = statement_obj executeQuery ( select ENAME from EMP ); //Populate the list box with all the employee names while (results next ()){ employee_list add(results getString( )); } } catch (SQLException e) { throw new RuntimeException( SQL Exception + e getMessage()); } add(employee_list); } }

  程序

Oracle JDBC driver testheight= > Your browser doesnt support Java Last modified: Sat Mar : : MST 程序 的大部分都是与具体数据库无关的JDBC调用 依样画葫芦您也可以 访问PostgresQL 主要和Oracle相 关的部分是 Connection DB_conn = DriverManager getConnection ( jdbc:oracle:thin:@sforza: :ORCL scott tiger ); 注意 Oracle thin JDBC driver中URI的格式 jdbc:oracle:thin:@ :

  : 如果您想在URI中包括用户名和口令的话 jdbc:oracle:thin:username/password@ :

  : 同样的URI还有一个较长的格式 jdbc:oracle:thin:@(description=(address=(host= )(protocol =tcp)(port=

linux手册翻译——fallocate(2)

fallocate – manipulate file space

这是一个不可移植的、特定于 Linux 的系统调用。 For the portable, POSIX.1-specified method of ensuring that space is allocated for a file, see posix_fallocate(3).

fallocate() 允许调用者直接操作 fd 引用的文件所分配的磁盘空间,操作的字节范围为。

mode 参数确定要在给定范围上执行的操作。 支持的操作的详细信息在下面的小节中给出。

fallocate()的默认操作(即 mode =0)是在参数 offset 和 len 指定的范围内分配磁盘空间。如果 offset + len 大于文件的大小,则文件大小将被修改。超过原范围的区域将会被初始化为0。此默认行为与 posix_fallocate(3) 库函数的行为非常相似,是实现 posix_fallocate(3) 的更佳实现方法。

调用成功后,后续写入 offset 和 len 指定的范围不会因为磁盘空间不足而失败。

注:这样做的有什么用呢?根据博客 用fallocate进行”文件预留”或”文件打洞” ,可以有以下好处:

(1)可以让文件尽可能的占用连续的磁盘扇区,减少后续写入和读取文件时的磁盘寻道开销;

(2)迅速占用磁盘空间,防止使用过程中所需空间不足。

(3)后面再追加数据的话,不会需要改变文件大小,所以后面将不涉及metadata的修改

如果在mode中指定了 FALLOC_FL_KEEP_SIZE 标志,调用的行为类似,即依然会为文件分配磁盘空间,但是不会修改文件大小。这种预分配的方式可以用来优化文件的append操作,也就是在执行append的时候不需要再额外申请磁盘空间了。

如果在 mode 中指定了 FALLOC_FL_UNSHARE_RANGE 标志,则共享文件数据范围将成为文件私有的,以保证后续写入不会因空间不足而失败。 通常,这将通过对文件中的所有共享数据执行写时复制操作来完成。 并非所有文件系统都支持此标志。

由于分配是以块大小的块完成的,fallocate() 可能会分配比指定范围更大的磁盘空间。

当mode指定为 FALLOC_FL_PUNCH_HOLE 时,会释放指定范围内的空间,即创建一个空洞。在指定的范围内,部分的文件块(即文件块部分属于该范围)将会被置为0,全部的在范围内的文件块,将会被从文件系统中删除。成功调用后,后续的读取将会返回0。

FALLOC_FL_PUNCH_HOLE 必须和 FALLOC_FL_KEEP_SIZE 通过或运算一起使用,换句话说, FALLOC_FL_PUNCH_HOLE 是不能修改文件的大小的。

并非所有文件系统都支持 FALLOC_FL_PUNCH_HOLE; 如果文件系统不支持该操作,则返回错误。 至少以下文件系统支持该操作:

当mode指定为 FALLOC_FL_COLLAPSE_RANGE 标志时,将从文件中删除指定的字节范围,而不会留下空洞。操作完成后,从 offset + len 开始位置的文件内容将会被追加到 offset 处。文件大小会减少 len

文件系统可能会限制操作的粒度,以确保有效实施。 通常,offset 和 len 必须是文件系统逻辑块大小的倍数,这取决于文件系统类型和配置。 如果文件系统有这样的要求,如果违反了该要求,fallocate() 将失败并显示错误 EINVAL。

If the region specified by offset plus len reaches or passes the end of file, an error is returned; instead, use ftruncate(2) to truncate a file.

FALLOC_FL_COLLAPSE_RANGE 标志和其他标志不兼容。

在 Linux 3.15 中,ext4(only for extent-based files)和 XFS 支持 FALLOC_FL_COLLAPSE_RANGE 标志。

当mode指定为 FALLOC_FL_COLLAPSE_RANGE 标志时,将会指定范围内分配磁盘空间,填补空洞。成功调用后后续读取将会返回0。

Zeroing is done within the filesystem preferably by converting the range into unwritten extents. This approach means that the specified range will not be physically zeroed out on the device (except for partial blocks at the either end of the range), and I/O is (otherwise) required only to update metadata.可能的意思是,更好不要将物理磁盘清零,而是配置一个为写入的状态,这样读取上来的pagecache就是0。这种情况下,仅仅需要修改文件元数据就可有了。

如果在mode中额外指定了FALLOC_FL_KEEP_SIZE标志,调用的行为类似,但即使offset+len大于文件大小,文件大小也不会改变。 此行为与在指定 FALLOC_FL_KEEP_SIZE 的情况下预分配空间时相同。

并非所有文件系统都支持 FALLOC_FL_ZERO_RANGE; 如果文件系统不支持该操作,则返回错误。 至少以下文件系统支持该操作:

如果在mode中额外指定了 FALLOC_FL_INSERT_RANGE 标志,那么将会在offset开始的位置插入一个大小为len的空洞,在不覆盖文件内容的前提下增加文件的空间。

此模式在操作粒度方面与 FALLOC_FL_COLLAPSE_RANGE 具有相同的限制。 如果不满足粒度要求,fallocate() 将失败并显示错误 EINVAL。 如果偏移量等于或大于文件末尾,则返回错误。 对于此类操作(即在文件末尾插入一个洞),应使用 ftruncate(2)。

FALLOC_FL_INSERT_RANGE 标志与其他标志不兼容。

目前只有XFS (since Linux 4.1) 和 ext4 (since Linux 4.2)支持此标志。

n success, fallocate() returns zero. On error, -1 is returned and errno is set to indicate the error.

fallocate() is available on Linux since kernel 2.6.23. Supportis provided by glibc since version 2.10. The FALLOC_FL_* flagsare defined in glibc headers only since version 2.18.

fallocate() is Linux-specific.

spolight on linux的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于spolight on linux,聚焦Linux:揭秘这个强大的操作系统,在Linux机器上安装运行Oracle,linux手册翻译——fallocate(2)的信息别忘了在本站进行查找喔。


数据运维技术 » 聚焦Linux:揭秘这个强大的操作系统 (spolight on linux)