欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell腳本實(shí)現(xiàn)ftok函數(shù)

 更新時(shí)間:2015年01月27日 09:32:46   投稿:junjie  
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)ftok函數(shù),ftok函數(shù)是操作系統(tǒng)底層中很有名的一個(gè)函數(shù),本文講在Shell中如何實(shí)現(xiàn)同樣算法的函數(shù),需要的朋友可以參考下

“古老的 Sys IPC 仍然有好幾種有效的用途。三種 IPC 對象是共享內(nèi)存,信號燈和消息?!碑?dāng)使用到 IPC 的這些對象時(shí),你需要為每個(gè)對象創(chuàng)建一個(gè) Key。雖然理論上來說我們在定義一個(gè) IPC Key 的時(shí)候可以使用任意自己喜歡的 Key ,但為了避免與其他的程序產(chǎn)生定義重復(fù),在 UNIX/Linux 中一般會使用 key_t ftok(const char *path, int id) 函數(shù)來生成一個(gè)比較唯一的 Key 值。然而,“每個(gè)人都討厭 System V IPC。它比打孔紙帶還慢,使用與文件系統(tǒng)完全無關(guān)少得可憐的名字空間,使用人類討厭的數(shù)字給它的對象命名,并且還常常自己忘記自己的對象,你的系統(tǒng)管理員經(jīng)常需要用 ipcs(1) 查找那些丟失了的對象并且用 ipcrm(1) 刪除它們,還得求老天保佑不要在用光內(nèi)存以后才發(fā)現(xiàn)問題?!?對于來實(shí)現(xiàn)進(jìn)程監(jiān)控/自動(dòng)重啟Bash Shell 腳本來說,在腳本里面硬編碼進(jìn)當(dāng)前程序用到的 Key 值肯定不是個(gè)好辦法,最好是實(shí)現(xiàn)相同算法的 ftok 函數(shù)。

復(fù)制代碼 代碼如下:

#!/bin/sh
let key=0
function ftok() {
    pathname=$1;
    proj_id=$2;

    str_st_ino=`stat --format='%i' "${pathname}" 2>/dev/null`;
    str_st_dev=`stat --format='%d' "${pathname}" 2>/dev/null`;
    if [ "x${str_st_ino}" = "x" -o "x${str_st_dev}" = "x" ] ; then
        return 1;
    fi

    let st_ino=${str_st_ino}
    let st_dev=${str_st_dev}

    # 注意這里的位操作運(yùn)算符需要加轉(zhuǎn)義符
    let key1=${st_ino}\&16#FFFF
    let key2=${st_dev}\&16#FF
    let key2=${key2}\<\<16
    let key3=${proj_id}\&16#FF
    let key3=${key3}\<\<24
    let key=${key1}\|${key2}
    let key=${key}\|${key3}
}

function echohelp(){
    echo "ftok generator"
    echo "Usage:ftok pathname projid"
    exit 5
}

if [ $# -ne 2 ] ; then
    echohelp
fi

sPathName=$1
let nProjectID=$2

if [ "${sPathName:0:1}" != "/" ] ; then
    sPathName=${PWD}/${sPathName}
fi

if ! test -f ${sPathName} ; then
    echo "No File Found![${sPathName}]"
    exit 4
fi

ftok "${sPathName}" "${nProjectID}"
echo ${key}

相關(guān)文章

  • shell中循環(huán)調(diào)用hive sql 腳本的方法

    shell中循環(huán)調(diào)用hive sql 腳本的方法

    今天小編就為大家分享一篇shell中循環(huán)調(diào)用hive sql 腳本的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • awk中讓人郁悶的system()函數(shù)

    awk中讓人郁悶的system()函數(shù)

    system()的結(jié)果是直接返回給shell顯示了,然后再由awk繼續(xù)執(zhí)行后面的程序,這種情況下,if()里留下的其實(shí)是system()的執(zhí)行狀態(tài)【即0或1】”0”~/^[2 3]/,當(dāng)然就一直執(zhí)行else了
    2013-03-03
  • shell隨機(jī)定時(shí)修改密碼change_passwd.sh

    shell隨機(jī)定時(shí)修改密碼change_passwd.sh

    這篇文章主要介紹了shell隨機(jī)定時(shí)修改密碼change_passwd.sh,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Linux基礎(chǔ)命令last 命令實(shí)例詳解

    Linux基礎(chǔ)命令last 命令實(shí)例詳解

    Linux last命令用于顯示系統(tǒng)開機(jī)以來獲是從每月初登入者的訊息。本文主要給大家介紹Linux基礎(chǔ)命令last 命令實(shí)例詳解,感興趣的朋友跟隨小編一起看看吧
    2018-10-10
  • Linux用腳本實(shí)現(xiàn)“時(shí)分秒“倒計(jì)時(shí)功能

    Linux用腳本實(shí)現(xiàn)“時(shí)分秒“倒計(jì)時(shí)功能

    這篇文章主要介紹了Linux用腳本實(shí)現(xiàn)“時(shí)分秒“倒計(jì)時(shí)功能,本文圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Linux chown命令使用示例

    Linux chown命令使用示例

    Linux chown命令用于設(shè)置文件所有者和文件關(guān)聯(lián)組的命令,chown 需要超級用戶 root 的權(quán)限才能執(zhí)行此命令,本文給大家分享Linux chown命令使用示例,感興趣的朋友一起看看吧
    2023-03-03
  • 淺析使用?Auditbeat?模塊監(jiān)控?shell?命令的問題

    淺析使用?Auditbeat?模塊監(jiān)控?shell?命令的問題

    Auditbeat Audited 模塊可以用來監(jiān)控所有用戶在系統(tǒng)上執(zhí)行的 shell 命令,在終端用戶偶爾才會登錄的服務(wù)器上,通常需要進(jìn)行監(jiān)控,本文給大家介紹使用?Auditbeat?模塊監(jiān)控?shell?命令的相關(guān)知識,感興趣的朋友一起看看吧
    2022-02-02
  • linux創(chuàng)建用戶useradd命令代碼示例

    linux創(chuàng)建用戶useradd命令代碼示例

    本文通過代碼示例給大家介紹了adduser與useradd命令二者的關(guān)系 以及使用useradd命令添加用戶的方法,需要的朋友參考下吧
    2017-08-08
  • shell腳本退出的正確方式與最佳實(shí)踐

    shell腳本退出的正確方式與最佳實(shí)踐

    這篇文章主要給大家介紹了關(guān)于shell腳本退出的正確方式與最佳實(shí)踐,shell是linux系統(tǒng)必備工具,在linux系統(tǒng)里打開終端或者使用ssh連接時(shí)都是使用命令語言作為交互支撐,需要的朋友可以參考下
    2023-07-07
  • Shell中的while循環(huán)幾種使用實(shí)例詳解

    Shell中的while循環(huán)幾種使用實(shí)例詳解

    今天小編就為大家分享一篇關(guān)于Shell中的while循環(huán)幾種使用實(shí)例詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03

最新評論