新聞中心
Linux操作系統(tǒng)作為一種免費(fèi)的開源操作系統(tǒng),被廣泛地應(yīng)用于服務(wù)器和個(gè)人電腦中。它的穩(wěn)定性和安全性都是行業(yè)標(biāo)桿,成為了很多企業(yè)和開發(fā)者的首選。在本文中,我們將聚焦于Linux操作系統(tǒng),并嘗試揭秘這個(gè)強(qiáng)大的操作系統(tǒng)。

Linux操作系統(tǒng)的歷史
Linux操作系統(tǒng)最初由芬蘭的Linus Torvalds開發(fā)。他當(dāng)時(shí)是一名學(xué)生,為了學(xué)習(xí)而編寫了一個(gè)小型操作系統(tǒng)。該操作系統(tǒng)的種子就是Linux操作系統(tǒng)。這個(gè)操作系統(tǒng)首先作為開源軟件的形式發(fā)布,并在互聯(lián)網(wǎng)上得到了許多開發(fā)者的關(guān)注和支持。很快,Linux操作系統(tǒng)就成為了免費(fèi)的開源操作系統(tǒng),并在不斷地演進(jìn)和發(fā)展中逐漸變得越來越強(qiáng)大。
Linux操作系統(tǒng)的開源模式
Linux操作系統(tǒng)的開源模式讓所有的開發(fā)者都可以參與到Linux的開發(fā)和維護(hù)中來。Linux社區(qū)主要分為兩個(gè)分支:內(nèi)核開發(fā)社區(qū)和發(fā)行版社區(qū)。
內(nèi)核開發(fā)社區(qū)主要負(fù)責(zé)Linux內(nèi)核的開發(fā)和維護(hù)工作。這里有許多專業(yè)的內(nèi)核開發(fā)者,他們主要關(guān)注于Linux核心的組成,為了更好地管理Linux的資源,以及優(yōu)化Linux的性能,充分利用計(jì)算資源來達(dá)到更高效的運(yùn)行。
發(fā)行版社區(qū)則負(fù)責(zé)Linux操作系統(tǒng)的包裝和定制。發(fā)行版是Linux操作系統(tǒng)最直觀的表現(xiàn)形式,發(fā)行版社區(qū)主要通過封裝和更新各種軟件包來維護(hù)Linux操作系統(tǒng)的不斷發(fā)展和優(yōu)化。
Linux操作系統(tǒng)的優(yōu)勢
Linux操作系統(tǒng)有很多優(yōu)勢,讓它成為了很多企業(yè)和開發(fā)者的首選。其主要的優(yōu)勢如下:
穩(wěn)定性:Linux操作系統(tǒng)非常穩(wěn)定,并且可以長時(shí)間的運(yùn)行而不需要重新啟動(dòng)。
安全性:Linux操作系統(tǒng)能夠提供更好的安全性。它的基本設(shè)計(jì)結(jié)構(gòu)可以避免大多數(shù)的安全問題。此外,許多開發(fā)者也對Linux編寫了各種安全工具來增強(qiáng)它的安全性。
開發(fā)者友好性:Linux操作系統(tǒng)具有很好的開發(fā)者友好性。開發(fā)者可以隨時(shí)獲取Linux的源代碼,并進(jìn)行修改,以符合自己的需求。
性能優(yōu)異:Linux操作系統(tǒng)的性能非常優(yōu)異,尤其在服務(wù)器行業(yè)中廣泛使用,可以為企業(yè)帶來更好的效益。
Linux操作系統(tǒng)是一個(gè)強(qiáng)大的自由和開放源代碼操作系統(tǒng),成為了很多企業(yè)和開發(fā)者的首選。它的歷史,開源模式以及優(yōu)勢都是值得關(guān)注和學(xué)習(xí)的。這個(gè)操作系統(tǒng)的穩(wěn)定性和安全性是行業(yè)標(biāo)桿,其性能優(yōu)異讓它成為了服務(wù)器行業(yè)的代表。對于很多IT從業(yè)者來說,學(xué)習(xí)和了解 Linux 操作系統(tǒng),將對工作和職業(yè)發(fā)展帶來極大的幫助。
相關(guān)問題拓展閱讀:
- 在Linux機(jī)器上安裝運(yùn)行Oracle
- linux手冊翻譯——fallocate(2)
在Linux機(jī)器上安裝運(yùn)行Oracle
摘要 Oracle于去年年底宣布移植Oracle 和Oracle Application Server到Linux 這是一個(gè)明確無誤的標(biāo)志 整個(gè)世界都應(yīng)該認(rèn)識到 Linux已經(jīng)是一個(gè)嚴(yán)肅的操作系統(tǒng) 足以承擔(dān)企業(yè)級的應(yīng)用 Uche Ogbuji在下文中解釋了應(yīng)該如何安裝 配置和初步使用Oracle for Linux 如何在你的Linux機(jī)器上安裝運(yùn)行Oracle 一篇實(shí)用指導(dǎo) 經(jīng)過了許多謠傳和暗示之后 Oracle于 年 月 日發(fā)布了Linux上的Oracle 數(shù)據(jù)庫和Oracle Application Server 這是Linux近期歷史中最為耀眼的一幕 無論您個(gè)人對Oracle公司的看法如何 該公司在大規(guī)模數(shù)據(jù)應(yīng)用領(lǐng)域的巨大聲譽(yù)使這次產(chǎn)品發(fā)布成為一個(gè)明確 無誤的標(biāo)志 整個(gè)世界都應(yīng)該認(rèn)識到 Linux已經(jīng)是一個(gè)嚴(yán)肅的操作系統(tǒng) 足以承擔(dān)企業(yè)級的應(yīng)用 但對于任何真正關(guān)心Linux的人來說 各種宣傳攻勢只是過眼煙云 只有代碼才是關(guān)鍵的 (only code matters 譯注 事實(shí)上 Oracle i 即 for Linux已經(jīng)開發(fā)完成 但其中的erver模塊有問題 所以O(shè)racle還沒有發(fā)布 ) 開始行動(dòng) 在RedHat上安裝Oracle可以是相當(dāng)輕而易舉的 但要是完全跟著Oracle公司的文檔走就未必那么容易了 最快的捷徑是Tom Bisset的主頁 如果您看了Tom的主頁 那么您會(huì)注意到他漏了JDBC的安裝 如果您準(zhǔn)備使用JDBC(對于跨平臺的Oracle應(yīng)用十分方便) 只需在安裝屏幕要求您選擇組件(ponents)時(shí) 加上該選項(xiàng)即可 當(dāng)然 您應(yīng)該先裝好JDK 我個(gè)人使用Blackdown的JDK (譯注 Redhat包括JDK)然后需要設(shè)置oracle用戶的ClassPath環(huán)境變量 更好的辦法是在oracle用戶目錄的 bash_profile 或 profile中加上一句 CLASSPATH=/usr/lib/jdk/lib/classes zip; export CLASSPATH然后 如果您只需做Web Applet的話 在安裝程序 Choose JDBC Components 的時(shí)候 選擇 JDK JDBC Thin Driver 如果您需要做完整的Java應(yīng)用 選擇 JDK JDBC OCI Driver 另外請注意 安裝程序讓您輸入各口令時(shí) 如果口令不符合規(guī)范 不會(huì)警告 我之一次安裝時(shí) 口令里加了 這在UNIX中是允許的 Oracle就是另一碼事了 直到安裝快結(jié)束時(shí) 程序才告訴我口令有問題 當(dāng)時(shí)為保險(xiǎn) 起見 我從頭做了一次安裝 安裝程序的另一個(gè)問題是試圖往還沒有建立的目錄里拷貝文件 有必要在安裝前 mkdir p /u /app/oracle/product/ /doc/server /install 這一關(guān)過后萬事大吉 安裝成功后 必須以ROOT身份登錄 運(yùn)行root sh 我對root sh作了以下改動(dòng) · LBIN環(huán)境變量從/usr/lbin改成了/usr/local/bin · 增加環(huán)境變量LOG=/tmp/oracle root sh log 這樣腳本的運(yùn)行結(jié)果會(huì)記錄下來 root sh里說到 要想數(shù)據(jù)庫作為一個(gè)服務(wù)器運(yùn)行 必須先設(shè)定O_TASK變量 但是 事實(shí)上如果從安裝Oracle的機(jī)器上運(yùn)行root sh 就沒有必要設(shè)這個(gè)變量 Python和Oracle 我配置了一下python(譯注 一種強(qiáng)大 快速的面向?qū)ο蟮哪_本語言) 以測試Oracle的編程接口和網(wǎng)絡(luò)接口 在python中要連Oracle 需要Digital Creation(Zope應(yīng)用服務(wù)器的作者)的DCOracle模塊 您只需下載軟件并按照指示照做就行 如果是DCOracle 使用Setup 的配置 從ORACLE_LIBS變量中刪去 lsocket lnsl lgen lelf laio 和 lposix 即可 那些都是Solaris專用的 注意Redhat 和 中安裝的 python設(shè)置不全 config目錄和include目錄被省略 無法編譯安裝第三方的模塊 您必須自己編譯python或者下載一個(gè)合適的RPM 找python的RPM 更好的去處可能是Oliver Andrich的 Python & Linux主頁 只要rpm e nodeps python 然后 rpm i python python dev和其他RPM即可 裝好python后 我運(yùn)行了以下的基本查詢 訪問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 開發(fā)工作站配置 我在數(shù)據(jù)庫服務(wù)器以外的一臺機(jī)器上編譯安裝了python和其他編程接口 最初 看起來似乎我必須安裝Oracle 的所有PRO*C/C++軟件包 但要把Oracle安裝程序運(yùn)行到那一步也夠麻煩的 所以我不想那樣辦 于是我找出了寫程序所需 要的最小的頭文件(include) 對象文件(object)和庫文件(library): $ORACLE_HOME/lib/* $ORACLE_HOME/rdbms/demo/* $ORACLE_HOME/rdbms/lib/* 我的機(jī)器上設(shè)ORACLE_HOME為/usr/local/oracle 注意這些文件還不能讓您可以在C程序中直接嵌入SQL語句 只有完整安裝PRO*C/C++后才行 如果要用JAVA的話 還得增加$ORACLE_HOME/jdbc/lib/* 注意把這個(gè)目錄加到ClASSPATH變量中 JDBC連接 為測試JDBC連接 我作了一個(gè)小程序 在一個(gè)listbox內(nèi)顯示測試庫中的所有雇員名 下面的程序 是調(diào)用JDBC的java Applet 程序 是調(diào)用JAVA程序的HTML超文本 如果您的JDBC已經(jīng)安裝成功 將程序 拷貝為 JDBCTest java 將程序 拷貝為l 然后 javac JDBCTest java appletviewer l 您就可以自己看看結(jié)果如何了 程序 /* 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 程序 的大部分都是與具體數(shù)據(jù)庫無關(guān)的JDBC調(diào)用 依樣畫葫蘆您也可以 訪問PostgresQL 主要和Oracle相 關(guān)的部分是 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還有一個(gè)較長的格式 jdbc:oracle:thin:@(description=(address=(host= )(protocol =tcp)(port=
linux手冊翻譯——fallocate(2)
fallocate – manipulate file space
這是一個(gè)不可移植的、特定于 Linux 的系統(tǒng)調(diào)用。 For the portable, POSIX.1-specified method of ensuring that space is allocated for a file, see posix_fallocate(3).
fallocate() 允許調(diào)用者直接操作 fd 引用的文件所分配的磁盤空間,操作的字節(jié)范圍為。
mode 參數(shù)確定要在給定范圍上執(zhí)行的操作。 支持的操作的詳細(xì)信息在下面的小節(jié)中給出。
fallocate()的默認(rèn)操作(即 mode =0)是在參數(shù) offset 和 len 指定的范圍內(nèi)分配磁盤空間。如果 offset + len 大于文件的大小,則文件大小將被修改。超過原范圍的區(qū)域?qū)?huì)被初始化為0。此默認(rèn)行為與 posix_fallocate(3) 庫函數(shù)的行為非常相似,是實(shí)現(xiàn) posix_fallocate(3) 的更佳實(shí)現(xiàn)方法。
調(diào)用成功后,后續(xù)寫入 offset 和 len 指定的范圍不會(huì)因?yàn)榇疟P空間不足而失敗。
注:這樣做的有什么用呢?根據(jù)博客 用fallocate進(jìn)行”文件預(yù)留”或”文件打洞” ,可以有以下好處:
(1)可以讓文件盡可能的占用連續(xù)的磁盤扇區(qū),減少后續(xù)寫入和讀取文件時(shí)的磁盤尋道開銷;
(2)迅速占用磁盤空間,防止使用過程中所需空間不足。
(3)后面再追加數(shù)據(jù)的話,不會(huì)需要改變文件大小,所以后面將不涉及metadata的修改
如果在mode中指定了 FALLOC_FL_KEEP_SIZE 標(biāo)志,調(diào)用的行為類似,即依然會(huì)為文件分配磁盤空間,但是不會(huì)修改文件大小。這種預(yù)分配的方式可以用來優(yōu)化文件的append操作,也就是在執(zhí)行append的時(shí)候不需要再額外申請磁盤空間了。
如果在 mode 中指定了 FALLOC_FL_UNSHARE_RANGE 標(biāo)志,則共享文件數(shù)據(jù)范圍將成為文件私有的,以保證后續(xù)寫入不會(huì)因空間不足而失敗。 通常,這將通過對文件中的所有共享數(shù)據(jù)執(zhí)行寫時(shí)復(fù)制操作來完成。 并非所有文件系統(tǒng)都支持此標(biāo)志。
由于分配是以塊大小的塊完成的,fallocate() 可能會(huì)分配比指定范圍更大的磁盤空間。
當(dāng)mode指定為 FALLOC_FL_PUNCH_HOLE 時(shí),會(huì)釋放指定范圍內(nèi)的空間,即創(chuàng)建一個(gè)空洞。在指定的范圍內(nèi),部分的文件塊(即文件塊部分屬于該范圍)將會(huì)被置為0,全部的在范圍內(nèi)的文件塊,將會(huì)被從文件系統(tǒng)中刪除。成功調(diào)用后,后續(xù)的讀取將會(huì)返回0。
FALLOC_FL_PUNCH_HOLE 必須和 FALLOC_FL_KEEP_SIZE 通過或運(yùn)算一起使用,換句話說, FALLOC_FL_PUNCH_HOLE 是不能修改文件的大小的。
并非所有文件系統(tǒng)都支持 FALLOC_FL_PUNCH_HOLE; 如果文件系統(tǒng)不支持該操作,則返回錯(cuò)誤。 至少以下文件系統(tǒng)支持該操作:
當(dāng)mode指定為 FALLOC_FL_COLLAPSE_RANGE 標(biāo)志時(shí),將從文件中刪除指定的字節(jié)范圍,而不會(huì)留下空洞。操作完成后,從 offset + len 開始位置的文件內(nèi)容將會(huì)被追加到 offset 處。文件大小會(huì)減少 len
文件系統(tǒng)可能會(huì)限制操作的粒度,以確保有效實(shí)施。 通常,offset 和 len 必須是文件系統(tǒng)邏輯塊大小的倍數(shù),這取決于文件系統(tǒng)類型和配置。 如果文件系統(tǒng)有這樣的要求,如果違反了該要求,fallocate() 將失敗并顯示錯(cuò)誤 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 標(biāo)志和其他標(biāo)志不兼容。
在 Linux 3.15 中,ext4(only for extent-based files)和 XFS 支持 FALLOC_FL_COLLAPSE_RANGE 標(biāo)志。
當(dāng)mode指定為 FALLOC_FL_COLLAPSE_RANGE 標(biāo)志時(shí),將會(huì)指定范圍內(nèi)分配磁盤空間,填補(bǔ)空洞。成功調(diào)用后后續(xù)讀取將會(huì)返回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.可能的意思是,更好不要將物理磁盤清零,而是配置一個(gè)為寫入的狀態(tài),這樣讀取上來的pagecache就是0。這種情況下,僅僅需要修改文件元數(shù)據(jù)就可有了。
如果在mode中額外指定了FALLOC_FL_KEEP_SIZE標(biāo)志,調(diào)用的行為類似,但即使offset+len大于文件大小,文件大小也不會(huì)改變。 此行為與在指定 FALLOC_FL_KEEP_SIZE 的情況下預(yù)分配空間時(shí)相同。
并非所有文件系統(tǒng)都支持 FALLOC_FL_ZERO_RANGE; 如果文件系統(tǒng)不支持該操作,則返回錯(cuò)誤。 至少以下文件系統(tǒng)支持該操作:
如果在mode中額外指定了 FALLOC_FL_INSERT_RANGE 標(biāo)志,那么將會(huì)在offset開始的位置插入一個(gè)大小為len的空洞,在不覆蓋文件內(nèi)容的前提下增加文件的空間。
此模式在操作粒度方面與 FALLOC_FL_COLLAPSE_RANGE 具有相同的限制。 如果不滿足粒度要求,fallocate() 將失敗并顯示錯(cuò)誤 EINVAL。 如果偏移量等于或大于文件末尾,則返回錯(cuò)誤。 對于此類操作(即在文件末尾插入一個(gè)洞),應(yīng)使用 ftruncate(2)。
FALLOC_FL_INSERT_RANGE 標(biāo)志與其他標(biāo)志不兼容。
目前只有XFS (since Linux 4.1) 和 ext4 (since Linux 4.2)支持此標(biāo)志。
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的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于spolight on linux,聚焦Linux:揭秘這個(gè)強(qiáng)大的操作系統(tǒng),在Linux機(jī)器上安裝運(yùn)行Oracle,linux手冊翻譯——fallocate(2)的信息別忘了在本站進(jìn)行查找喔。
成都網(wǎng)站營銷推廣找創(chuàng)新互聯(lián),全國分站站群網(wǎng)站搭建更好做SEO營銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價(jià)格厚道。提供成都服務(wù)器托管租用、綿陽服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽服務(wù)器機(jī)房服務(wù)器托管租用。
分享題目:聚焦Linux:揭秘這個(gè)強(qiáng)大的操作系統(tǒng) (spolight on linux)
鏈接URL:http://fisionsoft.com.cn/article/dhgssej.html


咨詢
建站咨詢
