国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

shell編程實(shí)驗(yàn)-用戶登錄狀態(tài)監(jiān)測(cè)

這篇具有很好參考價(jià)值的文章主要介紹了shell編程實(shí)驗(yàn)-用戶登錄狀態(tài)監(jiān)測(cè)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、實(shí)驗(yàn)?zāi)康模?/strong>

使學(xué)生熟悉一種簡(jiǎn)單的指定用戶的監(jiān)測(cè)方法,熟悉UNIX的基本SHELL程序設(shè)計(jì)方法和使用技巧,包括:

(1)命令行參數(shù)檢測(cè)

(2)用戶變量

(3)while循環(huán)控制

(4)暫停進(jìn)程(sleep)

二、實(shí)驗(yàn)原理:

(1)SHELL程序的主要用途

在SHELL程序中不僅僅可以使用命令的集合,而且可以安排自動(dòng)化處理過(guò)程,因此可以通過(guò)編寫SHELL程序使大量的任務(wù)執(zhí)行實(shí)現(xiàn)自動(dòng)化。SHELL比較擅長(zhǎng)完成系統(tǒng)管理任務(wù),尤其適合完成那些易用性、可維護(hù)性和便攜性比執(zhí)行效率更優(yōu)先的任務(wù)。我們可以使用任意一種文本編輯器完成SHELL程序的編寫,在SHELL編程中要遵循一定的程序設(shè)計(jì)規(guī)則和變量使用規(guī)則。

(2)SHELL程序的執(zhí)行與調(diào)試

在bash的SHELL程序設(shè)計(jì)中,程序必須以下面的行開始:

#!/bin/bash

這里符號(hào)#!用來(lái)告訴系統(tǒng),后面給出的參數(shù)是用來(lái)執(zhí)行該文件的程序。

利用vi,gedit等文本編輯器編寫Shell腳本的格式是固定的,如下:

#!/bin/sh

#comments

Your commands go here

filename.sh,文件名后綴sh表明這是一個(gè)Bash腳本文件

當(dāng)編輯完一個(gè)SHELL腳本后,要使該腳本能夠執(zhí)行,還必須使該腳本文件具有可執(zhí)行權(quán)。需要執(zhí)行命令:

chmod ?+x ?filename

在shell程序中,以#開頭到一個(gè)行結(jié)束的句子表示注釋信息。建議大家在編寫shell程序時(shí)養(yǎng)成添加注釋的習(xí)慣,因?yàn)樽⑨尣粌H能給其他需要熟悉該程序的人以幫助,也能給出腳本編寫者設(shè)計(jì)原理的提示。

進(jìn)行shell程序設(shè)計(jì)時(shí),必定會(huì)用到變量。Shell編程中使用的變量有自己的特色,即所有的變量都是由字符串組成的,而且對(duì)變量無(wú)須進(jìn)行聲明,可直接進(jìn)行變量賦值操作。

(3)SHELL程序注意事項(xiàng)

SHELL編程中除了需要遵守一些規(guī)則外,還有一些注意事項(xiàng),如果做得好會(huì)對(duì)編程有促進(jìn),這里列出幾條僅供大家參考,更多的內(nèi)容還需自己通過(guò)編程積累。

因?yàn)長(zhǎng)INUX中命令使用的是小寫字符,因此在SHELL編程中可以使用大寫字符表示變量以示區(qū)別。

在SHELL語(yǔ)句中加入必要的注釋,以便以后閱讀和維護(hù),注釋以”#”開頭。

對(duì)SHELL變量進(jìn)行數(shù)字運(yùn)算時(shí),使用乘法符號(hào)”*”時(shí),要用轉(zhuǎn)義符”\”進(jìn)行轉(zhuǎn)義。例子:multiplication=` expr $j \* $j`

由于SHELL對(duì)命令中多余的空格不進(jìn)行任何處理,因此程序員可以利用這一特性調(diào)整程序縮進(jìn)格式,達(dá)到增強(qiáng)程序可讀性的效果。

在對(duì)函數(shù)命名時(shí)最好能使用有含義且容易理解的名字,即使函數(shù)名能夠比較準(zhǔn)確地表達(dá)函數(shù)所完成的任務(wù)。同時(shí)建議對(duì)于較大的程序要建立函數(shù)命名和變量命名對(duì)照表。

如果一行未完成,可以在行尾加上“這個(gè)符號(hào) 表明下一行與此行會(huì)合并為同一行。

(4)SHELL簡(jiǎn)單調(diào)試

最簡(jiǎn)單的調(diào)試命令當(dāng)然是使用echo命令。可以使用echo在任何懷疑出錯(cuò)的地方打印任何變量值。另外還可以利用Bash中提供的選項(xiàng)進(jìn)行檢查

-n,讀一遍腳本中的命令但不執(zhí)行,用于檢查腳本中的語(yǔ)法錯(cuò)誤。

-v,一邊執(zhí)行腳本,一邊將執(zhí)行過(guò)的腳本命令打印到標(biāo)準(zhǔn)輸出。

-x,提供跟蹤執(zhí)行信息,將執(zhí)行的每一條命令和結(jié)果依次打印出來(lái)。該選項(xiàng)會(huì)顯示剛剛執(zhí)行的命令及參數(shù)。用戶可以通過(guò)set命令打開-x選項(xiàng)或在啟動(dòng)Shell使用-x選項(xiàng)將Shell設(shè)置成跟蹤模式。

使用這些選項(xiàng)有三種方法(注意:避免幾種調(diào)試選項(xiàng)混用)

1.在命令行提供參數(shù):$sh -x script.sh

2.腳本開頭提供參數(shù):#!/bin/sh -x

3.在腳本中用set命令啟用or禁用參數(shù):其中set -x表示啟用,set +x表示禁用。

(4)Sh和bash的區(qū)別

?Linux系統(tǒng)中的/bin/sh本是bash的符號(hào)鏈接,鑒于bash過(guò)于復(fù)雜,有人把bash從NetBSD移植到Linux并更名為dash,并建議將/bin/sh指向它,以獲得更快的腳本執(zhí)行速度。Dash?Shell比Bash?Shell小的多,符合POSIX標(biāo)準(zhǔn)。
因?yàn)閎ash是sh的增強(qiáng)版本,在我們平常實(shí)地操作的時(shí)候如果sh這個(gè)命令不靈了我們應(yīng)當(dāng)使用bash。

(5)用戶切換操作

1.sudo su //切換到root權(quán)限(但不是root用戶)

2. adduser tongxue1 增加一個(gè)同學(xué)1

3. login tongxue1 登錄同學(xué)1

4 這個(gè)時(shí)候使用who命令來(lái)查看 就會(huì)發(fā)現(xiàn)多了一個(gè)登錄賬戶 tongxue1了

三、實(shí)驗(yàn)內(nèi)容:

編寫一個(gè)用戶監(jiān)測(cè)程序usr_monitor, 其運(yùn)行格式為:

usr_monitor ?username

其中username是用戶指定的任意一個(gè)用戶名。

程序運(yùn)行時(shí)首先列出當(dāng)前系統(tǒng)中的已登錄用戶的名單,再檢查指定用戶是否已登錄。如果已登錄,則顯示相應(yīng)信息;如果未登錄,則等待該用戶登錄,直到指定用戶登錄進(jìn)入系統(tǒng)為止。具體步驟如下所示:

(1)根據(jù)變量$#的值檢查命令行上是否有一個(gè)用戶名,如果有則繼續(xù)運(yùn)行;如果沒(méi)有或多于一個(gè)用戶名則輸出提示信息:

Usage: usr_monitor ?username

(2)運(yùn)行who命令,并將運(yùn)行結(jié)果中的用戶名字段截取下來(lái),保存到一個(gè)用戶變量中。

(3)echo命令顯示該變量的值,即當(dāng)前系統(tǒng)中的用戶名單。

(4)判斷用戶名單中是否包含命令行上指定的用戶,如果有則輸出提示信息:user [username] is logon,并退出程序。

(5)如果用戶名單中沒(méi)有包含命令行上指定的用戶,則輸出提示信息:waiting user [username] …,光標(biāo)停留在省略號(hào)后面。

(6)使用while循環(huán),用sleep命令每隔5秒鐘檢查指定用戶是否已登錄系統(tǒng)。檢測(cè)方法與步驟2相同。

(7)如果指定用戶未登錄,則一直等待下去;如果指定用戶已登錄,則在省略號(hào)后面接著輸出提示信息: ?[username] is log on,退出循環(huán),并結(jié)束程序。

參考代碼如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-501385.html

#!/bin/bash
if [ $# -ne 1 ]; then
    echo "Usage: usr_monitor username"
    exit 1
fi
username=$1
users=$(who | awk '{print $1}')
echo "Current logged-in users:"
echo "$users"
while true; do
    users=$(who | awk '{print $1}')
    if echo "$users" | grep -w "$username" > /dev/null; then
        echo "User [$username] is logged on"
        break
    else
        echo "Waiting for user [$username] ..."
        sleep 5
    fi
done
echo "User [$username] is logged on. Exiting."

到了這里,關(guān)于shell編程實(shí)驗(yàn)-用戶登錄狀態(tài)監(jiān)測(cè)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用WGCLOUD監(jiān)測(cè)安卓(Android)設(shè)備的運(yùn)行狀態(tài)

    使用WGCLOUD監(jiān)測(cè)安卓(Android)設(shè)備的運(yùn)行狀態(tài)

    WGCLOUD是一款開源運(yùn)維監(jiān)控軟件,除了能監(jiān)控各種服務(wù)器、主機(jī)、進(jìn)程應(yīng)用、端口、接口、docker容器、日志、數(shù)據(jù)等資源 WGCLOUD還可以監(jiān)測(cè)安卓設(shè)備,比如安卓手機(jī)、安卓設(shè)備等 我們只要下載對(duì)應(yīng)的安卓客戶端,部署運(yùn)行即可,如下是下載鏈接 android(安卓)設(shè)備監(jiān)測(cè)使用說(shuō)明

    2024年02月15日
    瀏覽(25)
  • 突破傳統(tǒng)監(jiān)測(cè)模式:業(yè)務(wù)狀態(tài)監(jiān)控HM的新思路

    作者:京東保險(xiǎn)?管順利 在系統(tǒng)架構(gòu)設(shè)計(jì)中非常重要的一環(huán)是要做數(shù)據(jù)監(jiān)控和數(shù)據(jù)最終一致性,關(guān)于一致性的補(bǔ)償,已經(jīng)由算法部的大佬總結(jié)過(guò)就不在贅述。這里主要講如何去補(bǔ)償?補(bǔ)償?shù)姆桨改男窟@就引出來(lái)數(shù)據(jù)監(jiān)控系統(tǒng)了。有小伙伴會(huì)問(wèn)了,為什么業(yè)務(wù)狀態(tài)監(jiān)控系統(tǒng)可

    2023年04月25日
    瀏覽(18)
  • 【QT】使用QtConcurrent實(shí)時(shí)監(jiān)測(cè)指定軟件的運(yùn)行狀態(tài)

    【QT】使用QtConcurrent實(shí)時(shí)監(jiān)測(cè)指定軟件的運(yùn)行狀態(tài)

    測(cè)試實(shí)現(xiàn)監(jiān)視指定名稱的軟件是否在運(yùn)行,如果沒(méi)有運(yùn)行則像指定的IP發(fā)送監(jiān)測(cè)結(jié)果。 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 代碼如下(示例): 代碼如下(示例):

    2024年01月17日
    瀏覽(25)
  • python socket監(jiān)測(cè)服務(wù)器和客戶端連接狀態(tài)

    python socket監(jiān)測(cè)服務(wù)器和客戶端連接狀態(tài)

    服務(wù)器端和客戶端的連接狀態(tài),應(yīng)該是沒(méi)有單獨(dú)的函數(shù)返回或是接口監(jiān)測(cè)的,看網(wǎng)上很多資料說(shuō)需要監(jiān)測(cè)心跳,這確實(shí)是一個(gè)普遍解決監(jiān)測(cè)狀態(tài)的辦法,但是對(duì)我的項(xiàng)目卻顯得有些被動(dòng),其實(shí)對(duì)一般的項(xiàng)目包括我的,用try…except就可以滿足,里面設(shè)置標(biāo)志位,if判斷一下就可

    2024年02月13日
    瀏覽(19)
  • 突破傳統(tǒng)監(jiān)測(cè)模式:業(yè)務(wù)狀態(tài)監(jiān)控HM的新思路 | 京東云技術(shù)團(tuán)隊(duì)

    突破傳統(tǒng)監(jiān)測(cè)模式:業(yè)務(wù)狀態(tài)監(jiān)控HM的新思路 | 京東云技術(shù)團(tuán)隊(duì)

    在系統(tǒng)架構(gòu)設(shè)計(jì)中非常重要的一環(huán)是要做數(shù)據(jù)監(jiān)控和數(shù)據(jù)最終一致性,關(guān)于一致性的補(bǔ)償,已經(jīng)由算法部的大佬總結(jié)過(guò)就不再贅述。這里主要講如何去補(bǔ)償?補(bǔ)償?shù)姆桨改男??這就引出來(lái)數(shù)據(jù)監(jiān)控系統(tǒng)了。有小伙伴會(huì)問(wèn)了,為什么業(yè)務(wù)狀態(tài)監(jiān)控系統(tǒng)可以做補(bǔ)償?別急,往下看

    2024年02月14日
    瀏覽(17)
  • STM32WB55開發(fā)(1)----監(jiān)測(cè)STM32WB連接狀態(tài)

    STM32WB55開發(fā)(1)----監(jiān)測(cè)STM32WB連接狀態(tài)

    STM32WB系列微控制器代表了STMicroelectronics在無(wú)線技術(shù)領(lǐng)域的新一代創(chuàng)新,集成了Bluetooth 5.0、Zigbee和Thread等多種無(wú)線通信協(xié)議。而在這些無(wú)線應(yīng)用中,監(jiān)測(cè)和管理連接狀態(tài)顯得尤為關(guān)鍵。確保可靠連接不僅對(duì)于數(shù)據(jù)的實(shí)時(shí)傳輸至關(guān)重要,而且在面對(duì)低功耗需求、設(shè)備管理和故障

    2024年02月07日
    瀏覽(16)
  • C# HSLCommunication 實(shí)現(xiàn)設(shè)備狀態(tài)監(jiān)測(cè)與故障診斷,提高設(shè)備可靠性和可維護(hù)性

    簡(jiǎn)介: 在工業(yè)領(lǐng)域,設(shè)備狀態(tài)的監(jiān)測(cè)和故障診斷對(duì)于提高設(shè)備可靠性和可維護(hù)性至關(guān)重要。本文將介紹如何使用C# HSLCommunication庫(kù)來(lái)實(shí)現(xiàn)設(shè)備狀態(tài)的監(jiān)測(cè)和故障診斷,并探討其對(duì)設(shè)備可靠性和可維護(hù)性的具體貢獻(xiàn)。我們將詳細(xì)討論HSLCommunication庫(kù)的功能和特點(diǎn),并提供一個(gè)示例

    2024年01月24日
    瀏覽(40)
  • 淺談泛在電力物聯(lián)網(wǎng)在電力設(shè)備狀態(tài)在線監(jiān)測(cè)中的應(yīng)用

    淺談泛在電力物聯(lián)網(wǎng)在電力設(shè)備狀態(tài)在線監(jiān)測(cè)中的應(yīng)用

    安科瑞 華楠 摘要:隨著信息化水平的不斷發(fā)展,泛在電力物聯(lián)網(wǎng)的建設(shè)提上日程,這對(duì)提升變電站電力設(shè)備在線監(jiān)測(cè)水平,推動(dòng)智能電網(wǎng)發(fā)展具有重要的指導(dǎo)意義。對(duì)基于物聯(lián)網(wǎng)的電力設(shè)備狀態(tài)監(jiān)測(cè)系統(tǒng)進(jìn)行了研究,概括了泛在電力物聯(lián)網(wǎng)在線監(jiān)測(cè)系統(tǒng)的體系結(jié)構(gòu)和特征。

    2024年02月11日
    瀏覽(20)
  • uni-app中監(jiān)聽網(wǎng)絡(luò)狀態(tài),并在嵌入webView頁(yè)面的組件中添加網(wǎng)絡(luò)監(jiān)測(cè)

    uni-app中監(jiān)聽網(wǎng)絡(luò)狀態(tài),并在嵌入webView頁(yè)面的組件中添加網(wǎng)絡(luò)監(jiān)測(cè)

    下載插件 打開網(wǎng)絡(luò)異常組件頁(yè)面,點(diǎn)擊\\\"下載插件并導(dǎo)入HBuilderX\\\"按鈕,打開HBuilderX軟件后,選擇需要導(dǎo)入插件的項(xiàng)目,點(diǎn)擊“確定即可”。 使用插件 pages/network/index頁(yè)面,仿照微信。 效果展示 修改網(wǎng)絡(luò)監(jiān)測(cè)組件mz-network-error 當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變化時(shí)emit相關(guān)事件 修改組件調(diào)用

    2024年02月12日
    瀏覽(40)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包