编写shell程序实验报告(编写一个shell脚本程序.功能是输入一个数字,给出系统中以该数字为pid的进程详情,并输出到一个文件里)
本文目录
- 编写一个shell脚本程序.功能是输入一个数字,给出系统中以该数字为pid的进程详情,并输出到一个文件里
- 编写脚本createfiles.sh,要求用户在运行该脚本时要输入一个自然数N作为参数,如果目
- 求高人帮做操作系统的实验报告,只需把实验内容写下即可
- 各位哥哥姐姐 帮忙写下VB实验报告 写1程序代码和实验过程 2结果分析 谢谢拉
编写一个shell脚本程序.功能是输入一个数字,给出系统中以该数字为pid的进程详情,并输出到一个文件里
#!/bin/sh
#使用read命令读取用户输入的数字,赋值给变量pid
read -p "Input PID: " pid
#ps命令列出所有进程,awk打印第一行标题行及进程号为pid的进程详情,输出到文件output
ps aux | awk -v n=$pid ’NR==1||$2==n{print}’ 》output
awk命令中,NR为内部变量,表示Number of Record,行号。$2表示第二个字段(PID)。
编写脚本createfiles.sh,要求用户在运行该脚本时要输入一个自然数N作为参数,如果目
Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。
如同其他语言一样,通过我们使用任意一种文字器,比如nedit、kedit、emacs、vi
等来编写我们的shell程序。
程序必须以下面的行开始(必须方在文件的第一行):
#!/bin/sh
符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。
当好脚本时,如果要执行该脚本,还必须使其可执行。
要使脚本可执行:
chmod +x filename
然后,您可以通过输入: ./filename 来执行您的脚本。
注释
在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。
变量
在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:
变量名=值
取出变量值可以加一个美元符号($)在变量前面:
#!/bin/sh
#对变量赋值:
a="hello world"
# 现在打印变量a的内容:
echo "A is:"
echo $a
在您的器中输入以上内容,然后将其保存为一个文件first。之后执行chmod +x first
使其可执行,最后输入./first执行该脚本。
这个脚本将会输出:
A is:
hello world
有时候变量名很容易与其他文字混淆,比如:
num=2
echo "this is the $numnd"
这并不会打印出"this is the 2nd",而仅仅打印"this is the ",因为shell会去搜索变量numnd的值,但是这个变量时没有值的。可以使用花括号来告诉shell我们要打印的是num变量:
num=2
echo "this is the ${num}nd"
这将打印: this is the 2nd
有许多变量是系统自动设定的,这将在后面使用这些变量时进行讨论。
如果您需要处理数学表达式,那么您需要使用诸如expr等程序(见下面)。
除了一般的仅在程序内有效的shell变量以外,还有环境变量。由export关键字处理过的变量叫做环境变量。我们不对环境变量进行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。
求高人帮做操作系统的实验报告,只需把实验内容写下即可
#include《algorithm》
#include《iomanip》
#include《conio.h》
using namespace std;
struct PCB
{
string p_name;//程序名
int super;//优先级
double ndtime;//需要时间
double runtime;//运行时间
string state;//状态
bool operator《(c***t PCB& nd)
{
return super》nd.super ;
}
};
int main()
{
int n,i,j,nn=0;
cout《《"\n请输入进程总个数?";
cin》》n;
PCB *PB=new PCB;
for(i=0;i《n;i++)
{
cout《《"\n\n进程号No."《《i《《":"《《endl;
cout《《"\n输入进程名:";
cin》》PB.p_name ;
cout《《"\n输入进程优先级数《0~99》:";
cin》》PB.super ;
cout《《"\n输入进程运行时间:";
cin》》PB.ndtime ;
nn +=PB.ndtime ;
PB.state ="W";
}
sort(PB,PB+n);
int k=PB.super ;
queue《PCB》 *que=new queue《PCB》;
for(i=0;i《n;i++)
que);
cout《《setfill(’ ’);
cout《《setiosflags(ios::left);
for(i=0;i《nn;i++)
{
PCB PP=que.front() ;
int kk;
for(kk=0;kk《n;kk++)
if(PP.p_name ==PB.p_name) break;
PB.state ="R";
cout《《"\n\n按任意键继续......";
getch();
cout《《"\n\n*-*-*-*-*-*-*-* The excute number:"《《i+1《《" *-*-*-*-*-*-*-*";
cout《《"\n\n*-*-*-*-*-*-* 当前正在运行的进程是: "《《PP.p_name 《《" *-*-*-*-*-*-*";
cout《《"\n\np_name state super ndtime runtime";
cout《《"\n |"《《setw(10)《《PP.p_name 《《" |"《《setw(6)《《PB.state 《《" |"《《setw(6)
《《PP.super 《《" |"《《setw(11)《《PP.ndtime 《《" |"《《PP***ntime ;
PP***ntime +=1;PB***ntime +=1;
if(PB.super -=1;
que.pop ();
cout《《"\n\n*-*-*-*-*-*-* 当前就绪队列状态为: *-*-*-*-*-*-*";
for(j=0;j《n;j++)
if(PB.state =="W")
{
cout《《"\n\np_name state super ndtime runtime";
cout《《"\n |"《《setw(10)《《PB.state 《《" |"《《setw(6)
《《PB***ntime ;
}
if(PP***ntime ==PP.ndtime )
{
PB.state ="F";
cout《《"\n\n时间片到期,此时进程已完成.";
if(que.empty ()&&k》0) k--;
}
else
{
PB.state ="W";
if(k》0) que);
else que);
if(que.empty ()&&k》0) k--;
}
}
cout《《"\n\n进程已全部完成."《《endl《《endl;
return 0;
}
整个程序都是模拟“最高优先级”进程调度算法的程序啊
我是用C++写的 你用编译器编译下 然后运行下 就知道怎么回事了
轮转法很简单,,,就不写了
不给我分数我觉得很冤枉 因为为了这个程序我写了1个多小时
没有功劳也会苦劳啊
各位哥哥姐姐 帮忙写下VB实验报告 写1程序代码和实验过程 2结果分析 谢谢拉
’1.新建个vb6工程,一个窗体文件;
’2.复制下面代码到新窗体的代码页中:
Option Explicit
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private C***t FO_MOVE = &H1
Private C***t FO_COPY = &H2
Private C***t FO_DELETE = &H3
Private C***t FO_RENAME = &H4
Private C***t FOF_MULTIDESTFILES = &H1
Private C***t FOF_CONFIRMMOUSE = &H2
Private C***t FOF_SILENT = &H4 ’ don’t create progress/report
Private C***t FOF_RENAMEONCOLLISION = &H8
Private C***t FOF_NOCONFIRMATION = &H10 ’ Don’t prompt the user.
Private C***t FOF_WANTMAPPINGHANDLE = &H20 ’ Fill in SHFILEOPSTRUCT.hNameMappings
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
’------------------------------------------------------------
Private C***t mstrPathExeFrom As String = "E:\TestExe****" ’path of source exe file
Private C***t mstrPathTxtFrom As String = "E:\TestTxt.txt" ’path of source txt file
Private C***t mstrPathExeTo As String = "C:\Test" ’path of target exe file
Private C***t mstrPathTxtTo As String = "C:\TestTxt" ’path of target txt file
Private C***t mlngNumber As Long = 100 ’number of copy
Private C***t mstrExtentionExe = "****"
Private C***t mstrExtentionTxt = ".txt"
’copy function
Function ShellFileOP(sFileArray As String, sDestination As String, iFlg As Integer) As Long
Dim r As Long
Dim sFiles As String
Dim SHFileOp As SHFILEOPSTRUCT
Debug.Print sFileArray
With SHFileOp
Select Case iFlg
Case 1
.wFunc = FO_COPY
Case 2
.wFunc = FO_MOVE
Case Else
End Select
.pFrom = sFileArray
.pTo = sDestination
.fFlags = FOF_SILENT + FOF_NOCONFIRMATION
End With
ShellFileOP = SHFileOperation(SHFileOp)
DoEvents
End Function
Private Sub Form_Load()
Dim nret As Long
Dim i As Long
On Error GoTo ERR_TRAP
’copy to C:\
For i = 1 To mlngNumber
’Exe File
nret = ShellFileOP(mstrPathExeFrom, mstrPathExeTo & i & mstrExtentionExe, 1)
’Txt File
nret = ShellFileOP(mstrPathTxtFrom, mstrPathTxtTo & i & mstrExtentionTxt, 1)
Next i
’project close
End
Exit Sub
ERR_TRAP:
MsgBox Err.Number & ":" & Err.Description, vbCritical, "save error"
Exit Sub
End Sub
’3.按照实际情况,更改上面几个文件的路径和名称