欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      程序?qū)嶒炁e例及總結(jié)

      時間:2019-05-12 03:26:28下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《程序?qū)嶒炁e例及總結(jié)》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《程序?qū)嶒炁e例及總結(jié)》。

      第一篇:程序?qū)嶒炁e例及總結(jié)

      一、實驗內(nèi)容

      1.在屏幕上顯示一個字符的源程序:

      DATAS SEGMENT STRING DB

      'HELLO!','$'

      ORG

      100H DATAS ENDS CODES SEGMENT

      ASSUME CS:CODES,DS:DATAS START:

      MOV AX,DATAS

      MOV DS,AX

      LEA DX,STRING

      MOV AH,09H

      INT 21H

      MOV AH,4CH

      INT 21H CODES ENDS

      END START

      2.編寫一個程序,實現(xiàn)字符串的復制功能,并且將復制的字符串顯示出來

      DATAS SEGMENT

      STRING_A DB

      'ICH LIEBE DICH','$'

      COUNT EQU $-OFFSET STRING_A DATAS ENDS

      STACKS SEGMENT STRING_B DB COUNT DUP(?)STACKS ENDS

      CODES SEGMENT

      ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

      MOV AX,DATAS

      MOV DS,AX

      MOV AX,STACKS

      MOV ES,AX

      LEA SI,STRING_A

      LEA DI,STRING_B

      MOV CX,COUNT

      STD

      REP MOVSB

      LEA DX,STRING_B

      MOV AH,9

      INT 21H

      MOV AH,4CH

      INT 21H

      MOV AH,4CH

      INT 21H CODES ENDS END START

      3、利用中斷調(diào)用,在屏幕上顯示1—9 之間隨機數(shù)。中斷號86H

      DATAS SEGMENT

      CLA DB 13,10,'WE ARE GOING TO PRODUCE A NUMBER AT RANDOM:$:'

      INFON DB 0DH,0AH,'THE PROGRAM RUNS GOOD$'

      DATAS ENDS

      STACKS SEGMENT STACK

      DB 200 DUP(0)

      STACKS ENDS

      CODES SEGMENT

      ASSUME DS:DATAS,SS:STACKS,CS:CODES

      START:

      MOV AX,DATAS

      MOV DS,AX

      LEA DX,CLA

      MOV AH,9

      INT 21H

      MOV AX,0

      MOV ES,AX;

      MOV BX,86H*4

      CLI

      MOV WORD PTR ES:[BX],OFFSET RAN

      MOV WORD PTR ES:[BX+2],SEG RAN

      STI

      INT 86H

      MOV AH,02H

      INT 21H

      LEA DX,INFON

      MOV AH,9

      INT 21H

      MOV AX,4C00H

      INT 21H

      RAN PROC

      PUSH CX

      PUSH DX

      MOV AH,0

      INT 1AH

      MOV AX,DX

      XOR DX,DX

      MOV BX,10

      DIV BX

      ADD DL,30H

      MOV AH,02H

      INT 21H

      POP DX

      POP CX

      IRET

      RAN ENDP CODES ENDS END START

      4.復制字符串,并倒序輸出

      DATAS SEGMENT

      STRING_A DB 'still here',13,10,'$'

      STRING_L DB '$' DATAS ENDS

      STACKS SEGMENT

      STRING_B DB 100 DUP(?)STACKS ENDS

      CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX

      MOV AX,STACKS MOV SS,AX

      LEA SI,STRING_L MOV AX,SI LEA SI,STRING_A

      LEA DI,STRING_B SUB AX,SI SUB AX,3

      MOV CX,AX MOV BX,AX

      STD

      REP MOVSB

      LEA DX,STRING_B

      MOV AH,9

      INT 21H MOV DL,13 MOV AH,2 INT 21H MOV DL,10 MOV AH,2 INT 21H

      LEA SI,STRING_B MOV CX,BX ADD SI,BX DEC SI S: MOV DL,[SI] MOV AH,2

      INT 21H DEC SI

      LOOP S

      MOV AH,004CH

      INT 21H CODES ENDS END START

      5、顯示比較兩個數(shù)的大小

      DATA SEGMENT A DB

      33H B DB

      87H DATA ENDS STACK SEGMENT

      DW

      DUP(?)STACK ENDS CODE SEGMENT

      ASSUME CS:CODE,DS:DATA,SS:STACK

      START:

      MOV AX,DATA MOV DS,AX MOV AL,'A' CMP B,AL JA BGA MOV DL,'A' MOV BL,'B' JMP DISP BGA: MOV DL,'B'

      MOV BL,'A' DISP:

      MOV AH,2 INT 21H MOV DL,'>' INT 21H MOV DL,BL INT 21H MOV AH,4CH INT 21H CODE ENDS END START

      6、鍵盤輸入10個學生的成績,編寫一個程序統(tǒng)計60-69分,70-79分,80-89分,90-99分及100分的人數(shù),分別存放在Score6,Score7,Score8,Score9和Score10單元中。輸入10個學生的成績?nèi)缦?65 94 78 82 83 95 72 68 90 98 DATAS SEGMENT

      INFON1 DB 13,10,'PLEASE INPUT THOSE SCORDS(YOU NEED NOT PRESS ENTER BETWEEN THEM):$'

      INFON3 DB 13,10,'$'

      INFON2 DB 13,10,'THE NUMBER OF SCORD6-SCORD10 IS:'

      SCORD6 DB 30H

      DB 32

      SCORD7 DB 30H

      DB 32

      SCORD8 DB 30H

      DB 32

      SCORD9 DB 30H

      DB 32

      SCORD10 DB 30H

      DB '$' DATAS ENDS

      STACKS SEGMENT

      DB 200 DUP(0)STACKS ENDS

      CODES SEGMENT

      ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

      MOV AX,DATAS

      MOV DS,AX

      MOV AH,9

      LEA DX,INFON1

      INT 21H

      MOV AH,9

      LEA DX,INFON3

      INT 21H

      MOV CX,10

      S: MOV AH,1

      INT 21H

      CALL CAL

      INT 21H

      MOV AH,2

      MOV DL,32INT 21H

      LOOP S

      MOV AH,9

      LEA DX,INFON2

      INT 21H

      MOV AX,4C00H

      INT 21H

      CAL PROC

      PUSH AX

      CMP AL,36H

      JZ G6

      CMP AL,37H

      JZ G7

      CMP AL,38H

      JZ G8

      CMP AL,39H

      JZ G9

      CMP AL,31H

      JZ G1 G6:

      ADD [SCORD6],1

      JMP WAN G7:

      ADD [SCORD7],1

      JMP WAN G8:

      ADD [SCORD8],1

      JMP WAN G9:

      ADD [SCORD9],1

      JMP WAN G1: ADD [SCORD10],1

      MOV AH,1

      INT 21H WAN: POP AX RET CAL ENDP CODES ENDS END START

      二、心得體會

      指令助記符決定了指令的功能,對應一條二進制編碼的機器指令。指令的操作數(shù)個數(shù)由該指令確定,可以沒有操作數(shù),也可以有一個或多個操作數(shù),大多數(shù)指令要顯示寫出來,還有些操作數(shù)是隱含的。當指令包含操作數(shù)的時候,書寫時必須遵守:

      1、指令助記符和操作數(shù)之間有分隔符,比如幾個空格;

      2、如果含有多個操作數(shù),操作數(shù)之間用逗號分隔。

      現(xiàn)在簡單總結(jié)匯編語言指令的分類:

      1、數(shù)據(jù)傳送指令;

      2、標志位操作指令;3、算術(shù)運算指令;

      4、邏輯運算指令;

      5、移位運算指令;

      6、位操作指令;

      7、比較運算指令;

      8、循環(huán)指令;

      9、轉(zhuǎn)移指令;

      10、條件設(shè)置字節(jié)指令;

      11、串操作指令;

      12、BCD碼運算調(diào)整指令;

      13、處理器指令。

      在編寫匯編程序時,應該注意特別容易出現(xiàn)的錯誤,例如在編寫數(shù)據(jù)傳送指令時,目的操作數(shù)和源操作數(shù)的類型一定要匹配,CS不能作為目的操作數(shù),offset后只能跟簡單地址符號,等等。

      匯編語言的尋址方式有直接尋址,寄存器尋址,基址變址尋址,相對基址變址尋址等等,掌握這些都是編寫匯編程序很重要的環(huán)節(jié)。

      匯編語言中的程序結(jié)構(gòu),子程序等知識也會幫助我們編寫出一個更加完善的匯編程序。另外,我們還應該掌握DOS系統(tǒng)功能調(diào)用,宏匯編等知識。這里要對子程序和宏匯編加以區(qū)分,我的理解是:子程序是調(diào)用,而宏是替換

      四周的學習很短,但是也很充實,有電磁場有信號有高頻,但是天天抱著電腦寫的是匯編,看的書也是匯編語言,其實很幸運能有機會學一些底層的東西,老師的教學很細致認真,沒有老師的督促,學習的效果肯定不盡人意。

      第二篇:Linux常用命令總結(jié)以及舉例

      Linux常用命令總結(jié)以及舉例(2008-06-24 21:24:39)標簽:linux 命令 應用 it

      1.$ uname-a

      分類:Linux

      Linux linux 2.4.18-4GB #1 Wed Mar 27 13:57:05 UTC 2002 i686 unknown 在這里我們從左向右看到常規(guī)的系統(tǒng)信息。每條信息都有自己的選項(在下面的圓括號中),可以單獨顯示:

      操作系統(tǒng)名稱為 Linux(-s)。本機的網(wǎng)絡節(jié)點名為 linux(-n)。操作系統(tǒng)發(fā)布版本為 4.5.18-4GB(-r)。

      操作系統(tǒng)版本為 #1 Wed Mar 27 13:57:05 UTC 2002(-v)。機器類型為 i686(-m)。這里的處理器類型(-p)為未知。2.stty 顯示關(guān)于您的終端設(shè)置的信息:

      $ stty-a speed 38400 baud;rows 40;columns 103;line = 0;intr = ^C;quit = ^;erase = ^?;kill = ^U;eof = ^D;eol =;eol2 =;start = ^Q;stop = ^S;susp = ^Z;rprnt = ^R;werase = ^W;lnext = ^V;flush = ^O;min = 1;time = 0;-parenb-parodd cs8-hupcl-cstopb cread-clocal-crtscts-ignbrk-brkint-ignpar-parmrk-inpck-istrip-inlcr-igncr icrnl ixon-ixoff-iuclc-ixany-imaxbel opost-olcuc-ocrnl onlcr-onocr-onlret-ofill-ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok-echonl-noflsh-xcase-tostop-echoprt echoctl echoke 第二行和第三行顯示了將在命令行分別調(diào)用的特殊字符和鍵序列。例如,“^Z” 即 CNTRL-Z 在本系統(tǒng)中發(fā)送一個終端休止符。退出符號以 “^” 即 CNTRL-發(fā)送,而我們可以將其改為 “^X”,如下所示:

      $ stty quit ^X 在這種情況下,您實際要輸入 ^ 符號,而不是 CNTRL 鍵。這種改變只在當前窗口中起效。為了使這種改變永久生效,需要在您的.bashrc 文件中輸入該語句。

      3.Diff 比較兩個文件。它返回那些導致文件不同的行,并返回關(guān)于如何使文件變得相同的一些含義隱晦的輸出:

      $ diff test.out test2.out 0a1 > Another test.在這里我們被告知,需要將 “Another test.” 這一行添加到 test.out,以便使它與 test2.out 相似。第一個字符 “0” 是要在 test.out 中編輯的行號; “a” 表示該行應該被添加到 test.out,以便與 test2.out 的第一行 “1” 相匹配。如果我們需要更改 test.out,則第二個字符也可以是 “c”,而如果我們需要從 test.out 中刪除一些內(nèi)容,則第二個字符是 “d”。

      您可能希望使一個文件與另一個文件相似,以便為某些代碼提供補丁。diff 還經(jīng)常作為分析工具,用于驗證程序或腳本 — 例如 sed 腳本 — 的輸出是否是所預期的輸出。4.date 命令可用于顯示或設(shè)置日期。如果用戶具有超級用戶權(quán)限,則他或她可以通過在以下命令中提供一個數(shù)字型字符串來設(shè)置日期:

      $ date 0101010004 此命令將日期設(shè)置為 2004 年(04)1 月 1 日(0101)凌晨 1 時(0100)。但是,任何用戶可以用所需的格式來顯示日期。注意在格式序列之前需要一個加號 “+”。如果沒有出現(xiàn)此命令的預期輸出,則嘗試將它包含在單引號中:

      $ date +'%H%M%S' 204748 您可以在序列中包含空格,這時您需要使用雙引號: $ date +“%H %M %S” 20 47 51 在日期的主頁上列有三十多種不同的格式序列,這些序列可以按需要結(jié)合起來,以獲得您最后的輸出格式。

      date 的輸出還可以用于腳本中,如: $ date-d '2 day' Thu Jan 29 19:02:02 EST 2004-d 選項指示 date 顯示其后字符串中所描述的時間。在上例中,我們要求顯示從現(xiàn)在起(2004 年 1 月 27 日)兩天后的日期。我們也可以要求顯示三天前的日期,其命令為:

      $ date-d '-3 day' Sun Jan 25 20:56:59 EST 2004 date 多種功能的另一個示例是能夠向其輸出附加字符串,為生成唯一的文件名提供了一種便利的方法。

      $ ls-l | cat > $(date +ls_%d%b%y%H%M.out)$ ls ls_*.out ls_04Feb041633.out 在這里,我們將一個長文件列表的輸出傳送給 cat,它將我們的輸出再傳送到一個名為 ls_04Feb041609.out 的文件。注意我們?yōu)槲募褂昧艘粋€變量,由美元符號 “$” 表示。依次將 “l(fā)s_” 和 “.out” 附加到日期,其格式為月份中的日(%d)、本地的月份名稱縮寫(%b)、年份的最后兩位數(shù)字(%y)、小時(%H)和分鐘(%M),從而產(chǎn)生此文件名。5.Sort 列可以用兩種不同的格式指定。如果使用-k 選項,則列的位置從 1 開始進行編號。您還可以使用 +POS1 格式,從第一列編號為零開始進行列的編號。以下兩個命令產(chǎn)生相同的輸出:

      $ ls-l *.out | sort +5-7 $ ls-l *.out | sort-k 6,8-rw-r--r--1 bluher users 375 Dec 5 2002 fdisk.out-rw-r--r--1 bluher users 2447 Dec 28 20:15 ls.out-rw-r--r--1 bluher users 590 Jan 4 21:24 greps.out-rw-r--r--1 bluher users 78 Jan 4 21:25 sgrep.out...在默認情況下,sort 命令的列分隔符是空格和制表符??梢允褂?t SEP 選項指定其他分隔符,其中 SEP 是您指定的分隔符號。sort 的默認順序是從最低到最高,利用-r 選項可以將順序顛倒。

      Sort 可用于很多不同的任務。例如,它可用于對文件輸出進行排序(如

      /etc/passwd),或者如我們在下面所看到的那樣,對 du 的輸出進行排序。當使用-m 選項時,sort 將文件合并,實際上并沒有對它們進行排序。但是,如果您希望將它們排序,就應該在文件合并前對它們排序。

      Sort 經(jīng)常與 uniq 命令一起使用,從已排序的文件中刪除完全相同的行。uniq 命令在管道中經(jīng)常跟在 sort 命令的后面,還可以使用-c 選項來計算某一行所出現(xiàn)的次數(shù),或者使用-d 選項,只報告完全相同的行:

      $ sort-m test.out test2_sort.out | uniq-c 1 Another test.1 Testing testing 2 This is a test.在這里我們合并兩個文件 test.out 和 test2_sort.out。然后我們使用-c 選項,將輸出傳送到 uniq,這樣最后的結(jié)果是按字母順序排列的列表,完全相同的行被刪除,并帶有一個關(guān)于每行出現(xiàn)頻率的報告。6.打印機控制 在多數(shù)情況下,打印機命令的使用相對較為明確。通過在 lpr 命令后面指定文件名,將作業(yè)發(fā)送到打印機。如果沒有提供文件名,則假定使用標準輸入。使用 lpq 命令,您可以獲得關(guān)于發(fā)送到打印機的作業(yè)的狀態(tài)報告。當您指定作業(yè)號時,Lprm 將作業(yè)從行打印機后臺打印隊列中刪除。

      $ lpr grep2.out $ lpq Printer:lp@linux 'lpdfilter drv=upp method=auto color=yes' Queue:1 printable job Server:pid 1929 active Unspooler:pid 1930 active Status:waiting for subserver to exit at 21:24:14.637 Rank Owner/ID Class Job Files Size Time active bluher@linux+928 A 928 grep2.out 779 21:24:14 done bluher A 877(STDIN)117258 13:09:53 $ lprm 928 Printer lp@linux: checking perms 'cfA928linux.local' dequeued 'cfA928linux.local' 在這里,當我們將作業(yè)發(fā)送到打印機后,我們查詢其狀態(tài)。Lpq 向我們顯示編號為 877 的作業(yè)已經(jīng)完成,而我們剛發(fā)送的作業(yè)編號為 928。我們使用命令 lprm 928 將活動的作業(yè)從隊列中刪除。7.磁盤信息

      無論您是維護自己的系統(tǒng)還是支持具有很多用戶的企業(yè),監(jiān)視磁盤空間都是系統(tǒng)管理員更重要的職責之一。du、df 和 fdisk 命令提供了可用磁盤空間的不同視圖。du 命令提供對每個目錄的文件空間使用情況的評估。在默認情況下,測量的單位是塊的數(shù)目,塊的大小通常在安裝您的系統(tǒng)時確定。

      在以下的示例中,系統(tǒng)是使用 1024 字節(jié)的塊安裝的。如果沒有指定目錄,則 du 開始對當前目錄進行計算。-h 選項以易于讀懂的形式提供大小的值:

      $ du-h Documents 105k Documents/jj 573k Documents/John 682k Documents 可以使用-a 選項更改輸出,該選項指示 du 顯示文件和目錄的塊數(shù)。選項--block-size=SIZE 指示 du 以 SIZE 所指定字節(jié)大小的塊的數(shù)目來顯示輸出。

      $ du--block-size=512 Documents 209 Documents/jj 1146 Documents/John 1363 Documents 在默認情況下,du 還為每個子目錄遞歸地打印信息。通過使用 max-depth=N 選項可以限制這種操作,其中 N 等于被報告的最大級數(shù):

      $ du--max-depth=2.$ du--max-depth=2 | sort-n 4./.xemacs 4./public_html 105./Documents/jj 573./Documents/Ian 682./Documents 2420./jdevhome/system 8350./jdevhome/system9.0.3.1035 13483./jdevhome/mywork 24252./jdevhome...du 報告目錄和子目錄的空間使用情況,而 df 報告已安裝文件系統(tǒng)的磁盤空間使用情況:

      $ df Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda6 4195632 1983656 2211976 48% / /dev/hda5 14607 3778 10075 28% /boot /dev/hda9 937372 494028 443344 53% /home /dev/hda8 6297248 3876880 2420368 62% /opt shmfs 256220 0 256220 0% /dev/shm 在這里,df 報告了五個文件系統(tǒng)的狀態(tài)。與 du 類似,df 利用-h 選項提供人類可讀的輸出:

      $ df-h Filesystem Size Used Avail Use% Mounted on /dev/hda6 4.0G 1.9G 2.1G 48% / /dev/hda5 14M 3.7M 9.8M 28% /boot /dev/hda9 915M 476M 440M 52% /home /dev/hda8 6.0G 3.7G 2.3G 62% /opt shmfs 250M 0 250M 0% /dev/shm df 命令還允許您利用-block-size=SIZE 選項來指定塊的大小。

      fdisk 命令是 Linux 的分區(qū)表操作命令。與 du 和 df 不同,沒有 root 用戶權(quán)限時不能運行該命令。如果指定了-l 選項,則可以將它僅用于報告的目的。它提供了您的整個分區(qū)表的完整視圖,而不僅僅是您使用 df 所看到的擴展 Linux 分區(qū):

      # fdisk-l Disk /dev/hda:240 heads, 63 sectors, 1940 cylinders Units = cylinders of 15120 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 1 286 2162128+ c Win95 FAT32(LBA)/dev/hda2 * 288 1940 12496680 5 Extended /dev/hda5 288 289 15088+ 83 Linux /dev/hda6 290 844 4195768+ 83 Linux /dev/hda7 845 983 1050808+ 82 Linux swap /dev/hda8 984 1816 6297448+ 83 Linux /dev/hda9 1817 1940 937408+ 83 Linux 8.進程監(jiān)視

      在繁忙的多用戶系統(tǒng)中,進程監(jiān)視也是 Linux 系統(tǒng)管理員的一項重要職責。在這方面,ps 和 top 是兩個最有用的命令。

      ps 命令提供了當前運行進程的快照。生動翔實的一課

      以下是 ps 的最簡單形式: $ ps PID TTY TIME CMD 3884 pts/1 00:00:00 bash 3955 pts/2 00:00:00 more 3956 pts/5 00:00:05 sqlplus PID 是進程的標識號。TTY 是進程所屬的終端控制臺。TIME 列是進程所使用的總的 CPU 時間。CMD 列列出正在執(zhí)行的命令行。

      使用帶有-ef 選項的 ps,返回系統(tǒng)中所有用戶的所有進程的完整列表。如果您將此 ps 命令的結(jié)果傳送到 grep 中,則該結(jié)果更易于查看。例如:

      $ ps-ef | grep oracle UID PID PPID C STIME TTY TIME CMD oracle 1633 1 0 13:58 ?00:00:00 ora_pmon_ora1 oracle 1635 1 0 13:58 ?00:00:00 ora_dbw0_ora1 oracle 1637 1 0 13:58 ?00:00:01 ora_lgwr_ora1 oracle 1639 1 0 13:58 ?00:00:02 ora_ckpt_ora1 oracle 1641 1 0 13:58 ?00:00:02 ora_smon_ora1 oracle 1643 1 0 13:58 ?00:00:00 ora_reco_ora1 oracle 1645 1 0 13:58 ?00:00:00 ora_cjq0_ora1 oracle 1647 1 0 13:58 ?00:01:18 ora_qmn0_ora1 oracle 1649 1 0 13:58 ?00:00:00 ora_s000_ora1 oracle 1651 1 0 13:58 ?00:00:00 ora_d000_ora1 注意,當您將 ps 的輸出傳送到 grep 命令時,列標題并不象在 ps 命令本身所使用時那樣正常地顯示。為便于說明,標題位于輸出的上方,以便清楚地顯示其聯(lián)系。

      雖然 uid 通常是指數(shù)字型的標識,但在第一列下指定的是用戶名,標記為 UID。PPID 是父進程的標識號。對于 Oracle 進程,這里的標識號為 1 — 它是 init 進程(所有進程的父進程)的 id,因為在本系統(tǒng)中安裝的 Oracle 是作為登錄進程的一部分而啟動的。

      標為 C 的列是由 CPU 用于計算執(zhí)行優(yōu)先級的因子。STIME 是指進程的啟動時間。

      問號表示這些進程不屬于任何 TTY,因為它們是由系統(tǒng)啟動的。

      以下是 ps 命令帶有某些不同選項的另一個示例。注意,其中很多列與執(zhí)行帶有-ef 選項的 ps 時的列相同:

      $ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND bluh 4024 0.0 0.2 2240 1116 pts/1 S 20:59 0:00 su bluher bluh 4025 0.0 0.3 2856 1668 pts/1 S 20:59 0:00 bash bluh 4051 0.0 0.2 2488 1504 pts/1 R 21:01 0:00 ps aux bluh 4052 0.0 0.1 1636 600 pts/1 S 21:01 0:00 grep bluher 進程監(jiān)視

      在繁忙的多用戶系統(tǒng)中,進程監(jiān)視也是 Linux 系統(tǒng)管理員的一項重要職責。在這方面,ps 和 top 是兩個最有用的命令。

      ps 命令提供了當前運行進程的快照。生動翔實的一課

      以下是 ps 的最簡單形式: $ ps PID TTY TIME CMD 3884 pts/1 00:00:00 bash 3955 pts/2 00:00:00 more 3956 pts/5 00:00:05 sqlplus PID 是進程的標識號。TTY 是進程所屬的終端控制臺。TIME 列是進程所使用的總的 CPU 時間。CMD 列列出正在執(zhí)行的命令行。

      使用帶有-ef 選項的 ps,返回系統(tǒng)中所有用戶的所有進程的完整列表。如果您將此 ps 命令的結(jié)果傳送到 grep 中,則該結(jié)果更易于查看。例如:

      $ ps-ef | grep oracle UID PID PPID C STIME TTY TIME CMD oracle 1633 1 0 13:58 ?00:00:00 ora_pmon_ora1 oracle 1635 1 0 13:58 ?00:00:00 ora_dbw0_ora1 oracle 1637 1 0 13:58 ?00:00:01 ora_lgwr_ora1 oracle 1639 1 0 13:58 ?00:00:02 ora_ckpt_ora1 oracle 1641 1 0 13:58 ?00:00:02 ora_smon_ora1 oracle 1643 1 0 13:58 ?00:00:00 ora_reco_ora1 oracle 1645 1 0 13:58 ?00:00:00 ora_cjq0_ora1 oracle 1647 1 0 13:58 ?00:01:18 ora_qmn0_ora1 oracle 1649 1 0 13:58 ?00:00:00 ora_s000_ora1 oracle 1651 1 0 13:58 ?00:00:00 ora_d000_ora1 注意,當您將 ps 的輸出傳送到 grep 命令時,列標題并不象在 ps 命令本身所使用時那樣正常地顯示。為便于說明,標題位于輸出的上方,以便清楚地顯示其聯(lián)系。

      雖然 uid 通常是指數(shù)字型的標識,但在第一列下指定的是用戶名,標記為 UID。PPID 是父進程的標識號。對于 Oracle 進程,這里的標識號為 1 — 它是 init 進程(所有進程的父進程)的 id,因為在本系統(tǒng)中安裝的 Oracle 是作為登錄進程的一部分而啟動的。

      標為 C 的列是由 CPU 用于計算執(zhí)行優(yōu)先級的因子。STIME 是指進程的啟動時間。

      問號表示這些進程不屬于任何 TTY,因為它們是由系統(tǒng)啟動的。

      以下是 ps 命令帶有某些不同選項的另一個示例。注意,其中很多列與執(zhí)行帶有-ef 選項的 ps 時的列相同:

      $ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND bluh 4024 0.0 0.2 2240 1116 pts/1 S 20:59 0:00 su bluher bluh 4025 0.0 0.3 2856 1668 pts/1 S 20:59 0:00 bash bluh 4051 0.0 0.2 2488 1504 pts/1 R 21:01 0:00 ps aux bluh 4052 0.0 0.1 1636 600 pts/1 S 21:01 0:00 grep bluher 除了提供重要的診斷信息,ps 命令還經(jīng)常用于找出失控進程的 PID。例如,您的一個用戶在 SQL*Plus 會話中輸入一個笛卡爾聯(lián)接。您可以執(zhí)行以下的 ps 命令來找出其 PID :

      $ ps-ef | grep bluher...bluher 4068 4064 0 21:14 pts/6 00:00:00 less bluher 4112 3945 0 21:28 pts/5 00:08:42 sqlplus...然后您可以使用以下命令將其終止: $ kill 4112 常規(guī)用戶可以看到所有的系統(tǒng)進程,但他們只能終止他們自己擁有的進程。Ps 只為您提供當前進程的快照。要即時查看最活躍的進程,可使用 top。Top 實時地提供進程信息。它還擁有交互式的狀態(tài),允許用戶輸入命令,如 n 后面跟有 5 或 10 等數(shù)字。其結(jié)果是指示 top 顯示 5 或 10 個最活躍的進程。Top 持續(xù)運行,直到您按 “q” 退出 top 為止。

      以下是 top 的部分顯示:

      8:14pm up 51 min, 7 users, load average: 0.02, 0.03, 0.05 96 processes:87 sleeping, 2 running, 0 zombie, 7 stopped CPU states:6.4% user, 3.5% system, 0.0% nice, 89.9% idle Mem:512440K av, 392288K used, 120152K free, 0K shrd, 55668K buff Swap:1050800K av, 0K used, 1050800K free 236128K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 1289 root 18 0 78008 11M 1796 R 3.7 2.2 0:49 X 1965 bluher 20 0 12244 11M 10456 S 1.9 2.3 0:01 kdeinit 1986 bluher 18 0 996 996 768 R 1.5 0.1 0:00 top 1803 bluher 20 0 16960 16M 13508 S 0.9 3.3 0:03 kdeinit 1804 bluher 20 0 16964 16M 13508 S 0.9 3.3 0:03 kdeinit 1800 bluher 19 0 12260 11M 10076 S 0.1 2.3 0:04 kdeinit 1 root 20 0 220 220 188 S 0.0 0.0 0:04 init...關(guān)閉

      看來應該以 shutdown 命令來結(jié)束本次討論。與本文以及上一篇文章中所討論的許多命令一樣,通常有一種 GUI 形式的替代方法可以關(guān)閉您的系統(tǒng)。但是,當您需要手動關(guān)閉時,您可以使用以下命令立即進行關(guān)閉:

      $ shutdown-h now 您可以使用以下命令手動地重新啟動系統(tǒng): $ shutdown-r now 注意這兩個命令都需要指定時間。您可以指定 “now” 或使用帶有時間秒數(shù)的-t 選項。

      我們在這兩篇文章中討論了大量內(nèi)容,但我們絕對無法涵蓋 Linux 可能具有的全部內(nèi)容。我們沒有討論的命令還有很多,而我們沒有看到的命令選項則更多。但是,在這里我們希望您至少找到了開始管理 Linux 系統(tǒng)所需的最少限度的工具。

      Sheryl Calish 是 Blue Heron Consulting 的一位專門研究 Linux 的 Oracle 開發(fā)人員。她還是 Central Florida Oracle Users Group 的基金主席和 IOUG Linux SIG 的銷售主席。

      第三篇:C語言實驗程序、總結(jié) 實驗六 函數(shù)

      一 實驗目的 掌握定義函數(shù)的方法;

      實驗六 函數(shù) 掌握函數(shù)實參與形參的對應關(guān)系以及“值傳遞”的方式; 3 掌握函數(shù)遞歸調(diào)用的方法;

      二 實驗內(nèi)容 編寫兩個函數(shù),分別求兩個正整數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個函數(shù),并輸出結(jié)果,兩個正整數(shù)由鍵盤輸入。

      【提示】設(shè)有兩個正整數(shù)m和n ⑴ 實驗四介紹了求最大公約數(shù)的算法,也可以用遞歸的方法求最大公約數(shù)。設(shè)hcf(int m,int n)是用來求m和n的最大公約數(shù)h函數(shù),k=m%n,則:

      ?hcf(n,k)h???nk?0k?0⑵ 若最大公約數(shù)為h,則最小公倍數(shù)為:m*n/h。

      實驗時,完成以下兩個函數(shù)的定義,使之和主程序構(gòu)成完整的程序,實現(xiàn)題目的要求。#include int hcf(int m,int n)/* 求最大公約數(shù)的函數(shù) */ { ?? } int lcd(int m,int n,int h)/* 求最小公倍數(shù)的函數(shù) */ { 返回最小公倍數(shù); } main(){ int m,n,h,l;printf(“請輸入兩個正整數(shù)m、n:”);scanf(“%d,%d”,&m,&n);h=hcf(m,n);printf(“%d和%d的最大公約數(shù)是:%dn”,m,n,h);l=lcd(m,n,h);printf(“%d和%d的最小公倍數(shù)是:%dn”,m,n,l);} 程序調(diào)試通過后,用m=350、n=125和m=96、n=64兩組數(shù)據(jù)運行程序,記錄程序的輸出。

      完整程序如下: #include int hcf(int m,int n)/* 求最大公約數(shù)的函數(shù) */ { int temp,r;if(m

      int lcd(int m,int n,int h)/* 求最小公倍數(shù)的函數(shù) */ { return(m*n/h);} main(){ int m,n,h,l;printf(“請輸入兩個正整數(shù)m、n:”);scanf(“%d,%d”,&m,&n);h=hcf(m,n);printf(“%d和%d的最大公約數(shù)是:%dn”,m,n,h);l=lcd(m,n,h);printf(“%d和%d的最小公倍數(shù)是:%dn”,m,n,l);}

      運行結(jié)果如下圖: 編寫求n!的函數(shù)f(int n),在主函數(shù)中輸入兩個整數(shù)m、n,然后調(diào)用函數(shù)求:

      Cnm?m!n!(m-n)!【注意】函數(shù)f的類型應用long或double。

      程序如下:

      #include long f(int n){ if(n)return n*jc(n-1);else return 1;}

      void main(){ long m,n,c;printf(“請輸入兩個整數(shù)”);

      scanf(“%d,%d”,&m,&n);c=f(c);m=m*(m-1)n=n*(n-1)c=m/(n*c)printf(“組合為%dn”,c);

      } 有一個字符串,輸入一個字符,編寫函數(shù)dstr將輸入的指定字符從字符串中刪去。#include void dstr(char str[],char ch){ } main(){ char str[80],ch;printf(“請輸入字符串:”);gets(str);printf(“請輸入欲刪除的字符:”);scanf(“%c”,&ch);dstr(str,c);printf(“刪除指定字符后的結(jié)果:%sn”,str);}

      完整程序如下: #include void enter_string(char str[80]){ printf(“請輸入字符串:”);gets(str);/* 從鍵盤輸入字符串到數(shù)組str */ } void delete_string(char str[],char ch){ int i,j;for(i=j=0;str[i]!='