linux實現
❶ 如何在linux環境下實現進程之間的通信
linux環境下實現進程之間的通信主要有以下幾種方式:
# 管道( pipe ):管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有親緣關系的進程間使用。進程的親緣關系通常是指父子進程關系。
# 有名管道 (named pipe) : 有名管道也是半雙工的通信方式,但是它允許無親緣關系進程間的通信。
# 信號量( semophore ) : 信號量是一個計數器,可以用來控制多個進程對共享資源的訪問。它常作為一種鎖機制,防止某進程正在訪問共享資源時,其他進程也訪問該資源。因此,主要作為進程間以及同一進程內不同線程之間的同步手段。
# 消息隊列( message queue ) : 消息隊列是由消息的鏈表,存放在內核中並由消息隊列標識符標識。消息隊列克服了信號傳遞信息少、管道只能承載無格式位元組流以及緩沖區大小受限等缺點。
# 信號 ( sinal ) : 信號是一種比較復雜的通信方式,用於通知接收進程某個事件已經發生。
#共享內存( shared memory):共享內存就是映射一段能被其他進程所訪問的內存,這段共享內存由一個進程創建,但多個進程都可以訪問。共享內存是最快的IPC方式,它是針對其他進程間通信方式運行效率低而專門設計的。它往往與其他通信機制,如信號量,配合使用,來實現進程間的同步和通信。
# 套接字( socket ) : 套解口也是一種進程間通信機制,與其他通信機制不同的是,它可用於不同及其間的進程通信。
管道的主要局限性正體現在它的特點上:
只支持單向數據流;
只能用於具有親緣關系的進程之間;
沒有名字;
管道的緩沖區是有限的(管道制存在於內存中,在管道創建時,為緩沖區分配一個頁面大小);
管道所傳送的是無格式位元組流,這就要求管道的讀出方和寫入方必須事先約定好數據的格式,比如多少位元組算作一個消息(或命令、或記錄)等等;
❷ 如何在Linux中實現計劃任務
對於系統管理員而言,做系統備份是一個系統管理員非常重要的工作,但是每天重復的工作是一件非常繁瑣的工作,那有沒有一種方法可以讓系統每天每到固定的時間都自己做備份工作呢?答案是有的,那就是計劃任務,現在我們就來說說計劃任務是怎麼一回事,以及怎麼去實現它
一般來說計劃任務分兩種一次性計劃任務和周期性計劃任務
1, 一次性計劃任務:顧名思義一次性計劃任務就是在某一個時間點只執行一次的任務,例如像,下周一有約會需要提醒這樣只執行一次的任務,
命令at ,batsh實現一次性計劃任務
At的用法:at time
例如 at 10:29 就是指在10:29 分執行的任務
執行的結果如下
At 命令的時間格式非常靈活我們可以使用
At now+1min
At 11:54
At date 等在這里不再贅述
Batsh 命令是指在系統空閑時執行的一次性計劃任務,比如你有一件不太重要的任務需要執行,當重要的任務執行完才會執行
Batsh 的用法
Batsh 回車 然後輸入你要執行的任務
2, 周期性計劃任務 :周期性計劃任務指的是每隔一段時間就執行一次的任務,比如鬧鍾每天早上六點叫你起床 命令 cron
(1) 載入cron 模塊crond:crond是一種服務一般情況下crond是默認載入的但是也不排除有特出情況
Modprobe crond
(2) crond服務操作 survice crond {start|status|stop|restart}
start 啟動crond
status查看crond的運行狀態
stop 停止crond服務
restart 重啟crond服務
(3) crond的分類 :系統crond和用戶crond
系統crond 是系統運行所需要的crond服務 /etc/crontab
用戶crond使用戶定義的crond服務/var/spool/cron/USERNAME
(4) cron 的書寫格式 min hour day month week command
共六段 第一段min 指分鍾,第二段hour指小時,第三段day指天,第四段mouth指月份,第五段week指周,第六段command指你要執行的命令例如
10 1 * * 7 ls –l /etc 指的是 每周末的一點10分執行ls –l /etc命令
在欄位中的*指在指定的時間域上所有的時間
—對應時間域上的連續取值時間 如1-10 1到10
,表示對應時間域上離散的時間取值如 1,10指的是1和10
/表示在對應時間域上每隔多久進行一次取值
如 1-10 1 * * 7 ls –l /etc指的是每周末的一點1-10分每分鍾執行ls –l /etc命令
1,10 1 * * 7 ls –l /etc指的是每周末的一點1分和10分時分別執行ls –l /etc命令
*/10 1 * * 7 ls –l /etc每周末的一點每隔10分鍾執行ls –l /etc命令
(5) 說了這么多那到底怎麼才能定義自己的計劃任務呢?
Crond –e 打開編輯文本然後輸入要定義計劃任務
如1,10 1 * * 7 ls –l /etc
保存並退出 一個計劃任務就做好了
我們來看看怎麼定義在每天晚上的凌晨把系統備份
管理員還可以為其他用戶定製計劃任務 使用 crontab –u username
Crontab –l 可以查看已經定義的計劃任務
Crontab –r 移除已將定義的計劃任務
(6) Crond 只能在Linux系統啟用的時候進行工作,當計劃任務所在的時間Linux系統處於不工作狀態那我們能不能在Linux啟動後的一段時間內將沒有做的計劃任務給補上呢?檔案是肯定的我們使用anacrond命令來是以這一功能
Anacron的命令格式 day min 說明信息 run-parts /etc/cron.daiy
Day 指過去多長時間沒有執行過命令 min 指啟動後多長時間執行
如 1 65 run-parts /etc/cron.daily 指一天沒有運行過時 啟動後65分鍾後執行任務計劃
❸ linux如何實現,對某個文本循環查找多個字元串,並輸出所在行的內容
在 Linux 中,您可以使用 grep 命令來實現這個功能。該命令可以用來在文本文件中搜索特定的文本模式。
例如,要查找在文件 all.log 中含有單詞 word 的行,您可以使用以下命令:
grep word all.log
如果要查找多個單詞,您可以將它們放在一個字元串中,然後將該字元串作為 grep 命令的參數。例如,要查找在文件 all.log 中含有單詞 word、list、hello、good 或 bad 的行,您可以使用以下命令:
grep "word|list|hello|good|bad" all.log
請注意,單詞之間使用 | 符號隔開,表示「或」的意思。
此外,您還可以使用 -f 選項來指定要查找的單詞列表所在的文件,這樣就可以避免在命令行中手動輸入單詞列表。例如,如果要查找的單詞列表保存在文件 search.txt 中,您可以使用以下命令:
grep -f search.txt all.log
希望這些信息能夠幫助您解決問題。
❹ Linux下代碼實現創建目錄mkdir
Linux下mkdir函數
頭文件庫:
1. 創建目錄
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
運用條件:只能在已存在的目錄下建立一級子目錄
返回值: 返回0表示成功,返回-1表述出錯。
mode 表示新目錄的許可權,可以取以下值:
其中,mode就用0777,0755這種形式。
2. 判斷一個目錄是否存在
可以使用opendir來判斷,這是比較簡單的辦法。
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name);
***********************************
#include<stdio.h>
#include<string.h>
#include<errno.h>
#include<unistd.h>
#include<dirent.h>
#include<sys/types.h>
#include<sys/stat.h>
extern int errno;
#define MODE (S_IRWXU | S_IRWXG | S_IRWXO)
int mk_dir(char *dir)
{
DIR *mydir = NULL;
if((mydir= opendir(dir))==NULL)//判斷目錄
{
int ret = mkdir(dir, MODE);//創建目錄
if (ret != 0)
{
return -1;
}
printf("%s created sucess!/n", dir);
}
else
{
printf("%s exist!/n", dir);
}
return 0;
}
❺ 如何在Linux上實現文件系統的自動檢查和修復
我在本教程中將介紹如何藉助fsck工具,實現文件系統的自動檢查。
系統一啟動,就觸發文件系統自動檢查機制
如果你希望系統一啟動,就自動觸發fsck,那麼有一些方法可以設置在啟動過程中實現無人值守的fschk,這些方法具體取決於特定的Linux發行版。
在Debian、Ubuntu或Linux Mint上,編輯/etc/default/rcS,如下所示。
$ sudo vi /etc/default/rcS
# 啟動過程中,自動修復出現不一致性的文件系統
FSCKFIX=yes
在CentOS上,使用下列內容,編輯/etc/sysconfig/autofsck(要是它沒有,就創建)。
$ sudo vi /etc/sysconfig/autofsck
AUTOFSCK_DEF_CHECK=yes
強制定期檢查文件系統
如果文件系統很龐大,你可以強制定期檢查文件系統,而不是每次系統啟動時檢查文件系統。為了實現這個操作,先要藉助tune2fs命令,找到文件系統配置。下面這個命令行顯示了文件系統相關參數的當前值。請注意:/dev/sda1是文件系統超級塊所在的分區。
$ sudo tune2fs -l /dev/sda1
從tune2fs的輸出結果中,我們不僅可以看到文件系統的狀態(干凈與否),還可以看到與文件系統檢查有關的一些參數。"Maximum mount count"(最大掛載次數)這個參數是指文件系統檢查被觸發後的掛載次數。"Check interval"(檢查時間間隔)這個參數顯示了兩次文件系統檢查之間的最長時間。在大多數Linux發行版上,這些參數並不是默認情況下被設置的,這意味著並不進行任何定期的文件系統檢查。
如果想強制每隔30次掛載就檢查文件系統,請運行下面這個命令。
$ sudo tune2fs -c 30 /dev/sda1
如果想強制每隔3個月就檢查文件系統,請使用下面這個命令。
$ sudo tune2fs -i 3m /dev/sda1
現在確認剛添加上去的文件系統檢查條件已正確設置。
$ sudo tune2fs -l /dev/sda1
. . .
Last mount time: n/a
Last write time: Fri Mar 14 22:29:24 2014
Mount count: 20
Maximum mount count: 30
Last checked: Mon Mar 3 20:55:08 2014
Check interval: (3 months)
Next check after: Sun Jun 1 21:55:08 2014
強制下一次系統重啟時,進行一次性的文件系統檢查
如果你想在下一次系統重啟時觸發一次性的文件系統檢查,可以使用這個命令。
$ sudo touch /forcefsck
一旦你在類似上面的頂層目錄(/)中創建了一個名為forcefsck的空文件,它就會在你下一次重啟時,強制進行文件系統檢查。系統成功啟動後,/forcefsck則會自動被清除。
❻ linux下通過腳本實現自動重啟程序
自動重啟故障相信大家都遇到過,原因也有很多,跟系統,硬體或者外界因素都有關,但是在Linux中可沒有那麼簡單。這里集中討論linux實現自動重啟程序的方法。下面一起看看!
自動重啟腳本
假定需要實現重啟的程序名為 test ,我們這里通過判斷進程數目來判斷程序是否正常。
ps -ef | grep "$1" | grep -v "grep" | wc –l 是獲取$1(本例中為test)的進程數,腳本根據進程數來決定下一步的操作。通過一個死循環,每隔1秒檢查一次系統中的指定程序的進程數。
代碼如下:
腳本check
#!/bin/sh
#-----------------------------------# 函數: CheckProcess# 功能: 檢查一個進程是否存在# 參數: $1 --- 要檢查的進程名稱# 返回: 如果存在返回0, 否則返回1.#---------------------------------------CheckProcess(){ # 檢查輸入的參數是否有效 if [ "$1" = "" ]; then return 1 fi #$PROCESS_NUM獲取指定進程名的數目,為1返回0,表示正常,不為1返回1,表示有錯誤,需要重新啟動 PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l` if [ $PROCESS_NUM -eq 1 ]; then return 0 else return 1 fi}
# 檢查test實例是否已經存在while [ 1 ] ; do CheckProcess "test" CheckQQ_RET=$? if [ $CheckQQ_RET -eq 1 ]; then# 殺死所有test進程,可換任意你需要執行的操作 killall -9 test exec ./test & fi sleep 1done
腳本start:
加入limit corempsize 102400,設置core file的大小,一旦程序Core Dump,有跡可尋。在該腳本中後台執行check腳本,可以省去很多麻煩,
#!/bin/cshlimit corempsize 102400
./check &
補充:電腦總是自動重啟怎麼辦
1、右擊“我的電腦”,選擇“屬性”項。
2、在打開的系統屬性窗口中選擇“高級系統設置”項進入。
3、在打開的“系統屬性”窗口中,切換至“高級”選擇卡,然後點擊“系統和故障恢復 設置”按鈕。
4、在打開的窗口中取消勾選“自動重啟啟動”項並按確認即可。
5、當電腦在使用的過程中產生藍屏時,我們就可以進入“系統日誌”管理器中查看產生系統失敗的根源啦。打開“運行”對話框,輸入命令“eventvwr.msc”即可查看日誌信息,從中定位系統產生失敗的原因。
6、當然,我們也可以通過禁用某些開機項來嘗試修復系統。打開“運行”對話框,輸入命令“msconfig”進入“系統配置實用程序”界面,勾選“常規”選項卡下的“診斷啟動”選項。
7、還有一種修復計算機藍屏或重啟故障的方法,就是在電腦啟動時按“F8”進入系統故障菜單,從中選擇“安全模式”進入或“最後一次正確的配置”項進入系統,將及有可能修復系統。
8、當然,如果以上方法均不能解決問題,那麼建議您還是重新安裝一下系統,畢竟安裝系統所耗費的時間相對修復所用時間要少許多。一勞永逸之事才是王道。
相關閱讀:電腦自動重啟方法
方法一:
1、打開控制面板-管理工具-計劃任務程序
2、創建基本任務,名稱欄目,輸入“定時重啟”,下一步;
3、在窗口裡,有每天、每周、每月、一次各種選擇,這里小誠選擇一次,這次執行完就失效,您可以根據自己的情況進行選擇哈,點擊下一步;
4、設置重啟的日期、時間點,下一步;
5、選擇啟動程序,下一步;
6、在打開頁面里,點擊瀏覽,找到C;WindowsSystem32Shutdown.exe,點擊打開;
7、在添加參數欄目里輸入“-r”(重啟),進行下一步
8、點擊完成,即可實現自動重啟了
方法二:
❼ linux系統實現安全機制的基本手段有哪些
實現安全機制主要有以下幾種:
系統層面:管訪問類別的防火牆、管目標文件安全上下文的SeLinux。
管理層面:密碼要復雜、三個月一次更新。
應用層面:用不到的別裝,時刻更新穩定版本,不要bata版本或類似版本。
個人層面:多看點安全方面的知識,安全手段先在沙盒中做好,然後再部署到真機上去。