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

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


咨詢
建站咨詢
