logo资料库

北邮2017研究生linux期末作业源代码.docx

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
第一个大题
第二个大题
第三个大题
第四个大题
第五个大题
第六个大题
第七个大题
第八个大题
第一个大题 1. shudown –r +10 “this system will reboot after 10 minutes” 2. ls -l | grep "^-" | wc –l(注:ls –l 是输出该目录下文件信息, grep “^-”是过 滤输出信息,保留一般文件,wc 用于统计多少行,一行信息对应一个文 件) 3. shuf file.txt –o sample.txt –n 100 (-n 是行数,-o 是输出文件),也可以用如 下命令 shuf file.txt –n 100 > sample.txt (利用重定向到新文件中) 第二个大题 1. 首先安装 crontabs:yum install crontabs(需要 root 用户) 2. 命令行中输入以下命令:crontab –e 进入到 crontab 命令行界面,是 vi 编 辑界面 3. 输入以下命令: 20 2 * * * rm –rf /confbackup/* * 8-14/1 * * * cat /home/user/workspace/log >> /backup/bak.txt 或者采用 /home/user/workspace/log >> 如 下 命 令 * 8,9,10,11,12,13,14 * * * cat /backup/bak.txt 4. vi 编辑器保存退出显示 crontab: installing new crontab 则表示该调 度命令成功。 5. 通过 crontab –l 可以查看进行中的调度命令 6. crontab -r 结束调度 第三个大题 第一题代码: #!/bin/bash #add group #创建student组 groupadd students #循环添加 for name in $(seq 1 20) do
#判断是或小于10,如果小于就在前面加0 if [ $name -lt 10 ] then useradd -g students stu0$name useradd -g students stu$name else fi done 第二题代码: #!/bin/bash #get ascii table and write into the data.txt man ascii | sed -n '21,85p' > data.txt gawk 'BEGIN {print " Decimal \t HEX \t Character";print "---------------------------------"}; {print " gawk '{if($NF>=2) {res=$(NF-2);cur=$(NF-1);};print " "\t" $NF }' data.txt " $2 "\t" $3 "\t" $4}' data.txt " res "\t" cur 第四个大题 #!/bin/bash #声明牌的数组为关联数组 declare -A card #a b c d分别代表四个人 person=(1 2 3 4) #随机产生函数 function rand() { } #从card_total数组中 #得到随机数为1-52 #其中1-13为梅花 #14-26为方块 min=$1 max=$(($2-$min+1)) num=$(($RANDOM+1000000000)) echo $(($num%$max+$min)) } #随机数的产生之2 function seed_random(){ min=$1 max=$(($2-$min+1)) num=$(date +%s%N) echo $(($num%$max+$min))
#27-39为红桃 #40-52为黑桃 function random_value() { #产生要取出的数组下标值 rnd=$(seed_random 0 $1) #存储要返回的数据 local num=${card_total[$rnd]} #返回随机数值(数组下表)和对应的牌的值 echo $rnd echo $num } #发牌函数 #首先生成1-52的随机数,检验是否已经产生过 #然后按照发给第1,2,3,4个人的顺序依次发下去 function deal_cards() { done } #获得花色 function get_color() { #产生的牌的总数,达到52时终止,total的范围是0-51 declare -i total=51 #牌的原始数组 #下标是0-51,值是1-52 card_total=($(seq 1 52)) #记录已经产生过的数字,用于判断是否重复 number=() while [ $total -ge 0 ] do #产生随机数 rand_number=($(random_value $total)) unset card_total[${rand_number[0]}] card_total=(${card_total[*]}) #随机数加入到number数组中 echo "产生随机数${rand_number[1]}" number[$total]=${rand_number[1]} #确定这是第几个人的牌 count=$((total%4)) #加入到card数组中 card[${rand_number[1]}]=${person[$count]} #成功产生一个随机数加入则加1 echo ${number[*]} echo "总数是 is ${#number[*]}" ((total--))
#定义要判断的数值 key_temp=$1 if [ $key_temp -ge 1 -a $key_temp -le 13 ] then color="梅花" value=$key_temp echo $color echo $value elif [ $key_temp -ge 14 -a $key_temp -le 26 ] then color="方块" value=$((key_temp-13)) echo $color echo $value elif [ $key_temp -ge 27 -a $key_temp -le 39 ] then color="红桃" value=$((key_temp-26)) echo $color echo $value elif [ $key_temp -ge 40 -a $key_temp -le 52 ] then color="黑桃" value=$((key_temp-39)) echo $color echo $value fi } #输出按人打印手里的牌 function show_card() { for var in ${person[*]} do echo -n "第$var个人手里的牌是:" for key in ${!card[*]} do if [ ${card[$key]} = $var ] then #echo -n "$key " result=($(get_color $key)) echo -n "${result[0]}${result[1]} " fi done echo ""
done } deal_cards echo "最后数组是:${number[*]}" show_card 第五个大题 (1) 实现读取第 23 行的方法:  sed –n ‘23p’ file.txt  cat file.txt | head –n 23 | tail –n 1  awk “NR==23” file.txt for(i=1;i<=NF;i++) { array[$i]++; } (2) 统计单词: (3) #!/bin/bash (4) cat file.txt | sed 's/[,.:;/!?]//g' | awk ' (5) { (6) (7) (8) (9) };END{ (10) for(i in array) { (11) (12) } (13) } (14) '|sort –t ‘:’ –n –k 2 (3) 守护进程: print i,array[i] #!/bin/bash while true do sleep 5 testing=$(netstat -tuln |grep ":2001") if [ "$testing" == "" ] then ./start 2001 2>/dev/null 1>&2 & echo "process 2001 start" else fi testing=$(netstat -tuln |grep ":2002") if [ "$testing" == "" ]
then ./start 2002 2>/dev/null 1>&2 & echo "process 2002 start" fi testing=$(netstat -tuln |grep ":2003") if [ "$testing" == "" ] then ./start 2003 2>/dev/null 1>&2 & echo "process 2003 start" fi done 第六个大题 #!/bin/bash #find the file end with .model modelfile=$(find ./models/ -name '*.model') for var in $modelfile do #store .model into datastore.txt echo $var >> datastore.txt #execute the commmand and get the rate of accurate temp=$(./bin deploy.prototxt $var |tail -n 1|awk '{print $NF}') #write the rate into the datastore sed -e "$ s/$/ $temp/" datastore.txt > datastore.txt done #get the high rate of the model cat datastore.txt |sort -n -k 2|tail -n 1|awk '{print $1}' 第七个大题 Android.mk 文件: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) OPENCV_INSTALL_MODULES:=on OPENCV_CAMERA_MODULES:=off OPENCV_LIB_TYPE=STATIC
:= nonfree include /home/user/OpenCV-android-sdk/native/jni/OpenCV.mk LOCAL_MODULE LOCAL_SRC_FILES := nonfree_init.cpp sift.cpp surf.cpp LOCAL_LDLIBS include $(BUILD_SHARED_LIBRARY) += -llog Application.mk 文件: APP_STL := gnustl_static APP_CPPFLAGS:=-frtti -fexceptions APP_ABI := armeabi armeabi-v7a 编译指令:ndk-build 第八个大题 第 1、2、3 小问 function.c 文件: #include //交换两个数组 void swap(int *a, int *b){ int tmp = *a; *a = *b; *b = tmp; } //输出打印数组 void output(int list[], int size){ int i; for(i = 0; i < size; i++){ printf("%d ", list[i]); } putchar('\n'); } //递归查找全排列输出 void permutation_duplicate(int list[], int begin, int end, int p_size){ int i, j; if(begin >= p_size){ output(list, p_size); } else{
for(i = begin; i <= end; i++){ for(j = begin; j < i; j++){ if(list[j] == list[i]){ break; } } if(i == j){ swap(list + begin, list + i); permutation_duplicate(list, begin + 1, end, p_size); swap(list + begin, list + i); } } } } Function.h 文件 #include void swap(int *a, int *b); void output(int list[], int size); void permutation_duplicate(int list[], int begin, int end, int p_size); main.c文件: #include #include "function.h" int main() { //定义数组长度,从命令行获取 int total; printf("请输入数组长度:"); scanf("%d", &total); //定义输入的数组 int num; int i=0; int j=0; int arr[10]; printf("请输入数组参数:"); while(i
分享到:
收藏