Advertisement
abcdd

OS++

Jun 18th, 2018
981
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.05 KB | None | 0 0
  1. 1.команда за листање на сите датотеки чие име има повеќе од 5 карактери, каде крајниот е c, а содржат и точка (.) (пр. zad1.c, .javac)
  2. ----------------------
  3. ls -l | grep '^-.*' | awk '{ print $10 }' | grep '.*\{5,\}\..*c$'
  4. ls -la | grep '^-.*' | awk '{ print $10 ;}' | grep '.*\.*c$' | grep '.\{6,\}'
  5. ls -la | grep '^-' | awk '{print $10;}' | sed -n '/.....*c$/p'
  6. ls -1ap | grep -v '/$' | grep '^.\{6,\}$' | grep '\.' | grep 'c$'
  7.  
  8. ***ls -l | grep '^-' | awk '{print $10;}' | sed -n '/.....*c$/p' | grep '\.'
  9. ***ls -l | grep '^-' | awk '{ print $10; }' | grep 'c$' | grep '.\{5,\}' | grep '\.'
  10.  
  11. 2.команда за листање на сите именици чии имиња се составени само од букви (големи или мали) и цифри (пр. OSgr1, zad1t1)
  12.  
  13. ls -l | grep '^d.*' | awk '{print $10}' | grep -E '^*[a-zA-Z0-9]*$'
  14.  
  15. ****ls -l | grep '^d'|awk '{ print $10;}' | grep -v [^0-9a-zA-Z]
  16.  
  17. 3.Да се напише една команда која ќе отпечати листа на процеси (нивни ID-а) од целиот оперативен систем кои се директно стартувани / контролирани од страна на init процесот (PID = 1). Командата да се зачува како командна процедура под името zad3b-t2.sh.
  18.  
  19. ps -ef | awk '{ if ($2 == '1' || $3 == '1') print $0; }'
  20.  
  21. Kristijan Bojadjiski
  22. Kristijan Bojadjiski fala kolega, samo mislam deka ova se bara bidejki vika PID =1 vo $3 e PPID
  23. ps -ef | awk '{ if ($2 == '1') print $0; }'
  24. Фросина Стојановска колега јас мислам дека треба да бид $3, затоа што ти вика оние што се директно статувани од PID, што би требало да ги врати неговите деца.. . 😕
  25. ****ps -ef | awk '{ if ($3 == '1') print $2;}'
  26.  
  27. 4.Да се напише командна процедура која во даден именик (прв аргумент)
  28. и сите негови подименици рекурзивно ќе ги пронајде сите датотеки модифицирани
  29. во даден временски интервал (втор аргумент).
  30. За секоја од пронајдените датотеки треба да се изброи колку пати се користат
  31. командите за филтрирање на текст и тој број да се
  32. додаде на крајот на самата датотека.
  33. Направете проверка дали се проследени потребните аргументи и доколку не се,
  34. прикажете соодветно упатство за употреба.
  35. Доколку изворниот именик не постои, скриптата треба да го извести корисникот за
  36. тоа и да заврши неуспешно.
  37. Да се внимава вториот аргумент на скриптата да биде во форматот "X – Y",
  38. каде X и Y означуваат час (на пример: "10 – 16", значи од 10:00 до 16:59 часот).
  39. Командната процедура снимете ја под името zad4-t2.sh,
  40. во вашиот домашен именик на os.finki.ukim.mk серверот.
  41. ./script1.sh Imenik 10-15
  42. https://pastebin.com/08VNDRT5 ( ne iskaca )
  43.  
  44.  
  45. 5.Ispit juni 2017 cel : https://pastebin.com/E4iqreEj
  46. UNIX: a)ps -ef | grep '^163004' | wc -l
  47. b)who | grep '^163004' | awk '{ print $5;}' | sed 's/(//' | sed 's/)//'
  48. Threads : https://github.com/finki-mk/OS/blob/master/synchronization/src/main/java/mk/ukim/finki/os/synchronization/exam17/s1/g1/Scheduler.java
  49. IO resenie: https://pastebin.com/0TU2Fiwv
  50.  
  51.  
  52. 6.Ispit avgust 2017 cel: https://pastebin.com/2f1Ed5Gb smallFiles resenie:https://pastebin.com/7syVKASX
  53. UNIX: a) ps -ef | grep '^163004' | wc -l
  54. b) last | awk '{ if ( $5 == "Sept" ) print $0 }' | awk '{ if ( $6 == "5" ) print $3 }' | sort | uniq
  55.  
  56. !--------->CSV format shell<----------MISSING
  57.  
  58.  
  59. 7.Ispit januari 2018 cel : https://pastebin.com/ffvbWtSP , resenie :https://pastebin.com/PGgeBajq
  60. UNIX: a) who | grep '^163004' | sed -e 's/(//' -e 's/)//' | awk '{print $5;}'
  61. b) ps -ef | awk '{ if ( $3 == '1') print $2 }'
  62.  
  63. BigFiles:BigFiles.txt
  64.  
  65.  
  66. 9.Read Write simulation + unix + scripta (Januari 2017): https://pastebin.com/egDsn6yA
  67. threads: vo notepad resenieto ReadWrite.txt
  68. UNIX: b) last | awk '{ if ( $5 == "Jun" ) print $0 }' | awk '{ if ( $6 == "17" ) print $3 }' | sort | uniq
  69. IO: findDocuments.txt
  70.  
  71.  
  72. 10.https://github.com/jovicailievski/FINKI/tree/master/Operativni%20sistemi/ZadaciZaVezbanje/JavaIO
  73. I/O:Junska
  74. ----KG1,KG2-------
  75. Synh: Muzicki bend,Poker,SJF,TribeDinner2
  76. 14. i/O izmini: https://pastebin.com/6DTej3kc Izmini.txt resenie
  77. =================================================================================================
  78.  
  79. 11.PrvKol grupa1 2017
  80. 16.Grupa 2 I/O : https://pastebin.com/SC7M2Zs8(deserialize)
  81.  
  82. 15.i/O pomini : https://pastebin.com/S62bUdTV
  83. 17.Euro 2016 : https://pastebin.com/Xn27tdiT
  84. 8.матрица со скалар : https://pastebin.com/NkBjpeWV
  85. 18.Riste resenija: https://github.com/finki-mk/OS/tree/master/synchronization/src/main/java/mk/ukim/finki/os/synchronization/exam17
  86. Izmini:
  87.  
  88.  
  89. package java.io;
  90.  
  91. public class Izmini {
  92. public static void main (String [] args) throws IOException
  93. {
  94. String izvor = new String("izvor");
  95. String dest = new String("dest");
  96. izmini(izvor, dest);
  97. }
  98.  
  99. private static void izmini(String izvor, String dest) throws IOException {
  100. // TODO Auto-generated method stub
  101. File inDir = new File(izvor);
  102. File outDir= new File(dest);
  103.  
  104. if(!inDir.exists())
  105. {
  106. System.out.println("Ne postoi vlezen direktoriium");
  107. }
  108. if(!outDir.exists())
  109. {
  110. outDir.mkdirs();
  111. }
  112. else
  113. {
  114. rekurzivno(outDir);
  115. }
  116.  
  117. rekurzivnoIn(inDir,outDir);
  118.  
  119. }
  120.  
  121. private static void rekurzivnoIn(File inDir,File outDir) throws IOException {
  122. // TODO Auto-generated method stub
  123. File [] list = inDir.listFiles();
  124. for(int i =0;i<list.length;i++)
  125. {
  126. if(list[i].isFile())
  127. {
  128. if(list[i].getName().endsWith(".dat") && (list[i].length()>5000))
  129. {
  130. File nov = new File(outDir.getAbsolutePath()+"\\dat\\",list[i].getName());
  131. list[i].renameTo(nov);
  132. }
  133. if(list[i].getName().endsWith(".txt"))
  134. {
  135. FileWriter raf = null;
  136. try {
  137.  
  138. raf = new FileWriter(new File(outDir.getAbsolutePath()+"\\files.csv"), true);
  139.  
  140. raf.write(list[i].getName()+","+list[i].getAbsolutePath()+" "+list[i].length(), 0, 0);
  141. }
  142. catch (Exception e) {
  143. e.printStackTrace();
  144. }finally {
  145. if(raf != null){
  146. raf.flush();
  147. raf.close();
  148. }
  149.  
  150. }
  151. }
  152. }
  153. if(list[i].isDirectory())
  154. {
  155. rekurzivno(list[i]);
  156.  
  157. }
  158.  
  159. }
  160. }
  161.  
  162. private static void rekurzivno(File outDir) {
  163. // TODO Auto-generated method stub
  164. File [] lista = outDir.listFiles();
  165. for(int i =0;i<lista.length;i++)
  166. {
  167. if(lista[i].isFile())
  168. lista[i].delete();
  169. if(lista[i].isDirectory())
  170. {
  171. rekurzivno(lista[i]);
  172. lista[i].delete();
  173. }
  174.  
  175. }
  176. }
  177. }
  178. FindDocuments:
  179.  
  180.  
  181. package java.io;
  182. /*
  183. * Имплементирајте го методот findDocuments(String in, String out) кој ќе го изминува рекурзивно
  184. * директориумот претставен преку “in”. Доколку наиде на .docx или .xlsx кој е поголем од 5 мегабајти,
  185. * тогаш треба да го премести во “out”\dokumenti, а доколку наиде на .docx или .xlsx кој е помал или еднаков на 5 мегабајти,
  186. * тогаш треба да додаде линија на почетокот на “out”\brisenje.txt
  187. * од типот “<filename>, <size_in_kilobytes>”. Внимавајте дека може да има многу вакви документи во “in”
  188. * */
  189.  
  190. public class Januari17 {
  191. public static void main(String[] args) throws IOException {
  192. String izvor = "C:\\Users\\Lenovo\\Desktop\\Tamara\\4-четврт семестар\\Оперативни\\Вежби_Испит\\Ispitni";
  193. String destinacija = "C:\\Users\\Lenovo\\Desktop\\Tamara\\4-четврт семестар\\Оперативни\\Вежби_Испит\\Ispitni";
  194. File in = new File(izvor);
  195. File out = new File(destinacija);
  196. findDocuments(in, out);
  197. }
  198.  
  199. private static void findDocuments(File in, File out) throws IOException {
  200.  
  201.  
  202. File[] lista = in.listFiles();
  203. for (File f : lista) {
  204. if (f.isFile()) {
  205. if ((f.getName().endsWith(".doxc") || f.getName().endsWith(".xlxs")))
  206. if (f.length() > 5000) {
  207. FileInputStream fis = null;
  208. FileOutputStream fos = null;
  209. try {
  210. fis = new FileInputStream(f.getPath());
  211. fos = new FileOutputStream(out.getPath()+"\\dokumenti\\"+f.getName());
  212.  
  213.  
  214. byte[] buffer = new byte[1024];
  215. int noOfBytes = 0;
  216.  
  217. System.out.println("Copying file using streams");
  218. // read bytes from source file and write to destination file
  219. while ((noOfBytes = fis.read(buffer)) != -1) {
  220. fos.write(buffer, 0, noOfBytes);
  221. }
  222.  
  223.  
  224. } finally {
  225. if (fis != null)
  226. fis.close();
  227. if (fos != null)
  228. fos.close();
  229.  
  230. }
  231.  
  232. } else if (f.length() <= 5000) {
  233. FileWriter raf = null;
  234. try {
  235.  
  236. raf = new FileWriter(new File(out.getAbsolutePath()+"\\brisenje.txt"), true);
  237.  
  238. raf.write(f.getName()+" "+f.length(), 0, 0);
  239. }
  240. catch (Exception e) {
  241. e.printStackTrace();
  242. }finally {
  243. if(raf != null){
  244. raf.flush();
  245. raf.close();
  246. }
  247. }
  248.  
  249.  
  250. }
  251. }
  252. else if (f.isDirectory()) {
  253. findDocuments(f, out);
  254.  
  255. }
  256. }
  257. }
  258.  
  259. }
  260. BigFiles:
  261.  
  262.  
  263. package java.io;
  264.  
  265. public class BigFiles {
  266. public static void main(String [] args) throws IOException
  267. {
  268. String from = new String("New");
  269. String to = new String("To");
  270. bigFiles(from,to);
  271. }
  272. private static void bigFiles(String in, String out) throws IOException {
  273. File fin = new File(in);
  274. File[] files = fin.listFiles();
  275.  
  276. for(File f : files) {
  277. if(f.isDirectory()){
  278. bigFiles(f.getAbsolutePath(), out);
  279. }else {
  280. if(f.getName().endsWith(".dat") && f.length() > 100){
  281. BufferedWriter raf = null;
  282. try {
  283. //System.out.println("Found file");
  284. BufferedWriter writer = new BufferedWriter(new FileWriter(out+"\\files.txt"));
  285.  
  286. String parent = f.getParent();
  287. long size = f.length();
  288. boolean writeable = f.canWrite();
  289.  
  290.  
  291. //!!Ne znam zoso ne saka
  292. //writer.write(parent+" "+size+" "+writeable);
  293. //System.out.println("successfuly wrote name of file");
  294.  
  295.  
  296.  
  297.  
  298. }catch (Exception e) {
  299. e.printStackTrace();
  300. }finally {
  301. if(raf != null){
  302. raf.flush();
  303. raf.close();
  304. }
  305.  
  306. }
  307. }
  308. }
  309. }
  310.  
  311. }
  312. }
  313. 15.PrvKol
  314.  
  315.  
  316. import java.io.File;
  317. import java.io.FileInputStream;
  318. import java.io.FilenameFilter;
  319. import java.io.IOException;
  320. import java.io.RandomAccessFile;
  321. import java.util.List;
  322.  
  323. import mk.ukim.finki.os.filemanagement.exam.IExamIO;
  324. import mk.ukim.finki.os.filemanagement.exam.TestExam;
  325.  
  326. public class ExamIO implements IExamIO {
  327. public void moveWritableTxtFiles(String from, String to){
  328. File f = new File(from);
  329. File t = new File(to);
  330.  
  331. if(!f.exists()){
  332. System.out.println("Ne postoi");
  333. return;
  334. }
  335. if(!t.exists()){
  336. t.mkdirs();
  337. }
  338. File[] files = f.listFiles();
  339. for (File file : files) {
  340. if(file.getName().endsWith(".txt") && file.canWrite()){
  341. File newFile = new File(t, file.getName());
  342. file.renameTo(newFile);
  343. }
  344. }
  345. }
  346. public void deserializeData(String source, List<byte[]> data, int elementLength) throws IOException {
  347. FileInputStream fis = null;
  348. try {
  349. fis = new FileInputStream(source);
  350. byte[] element = new byte[(int) elementLength];
  351. int b;
  352. int read = 0;
  353. while((b = fis.read()) != -1){
  354. element[read] = (byte) b;
  355. read++;
  356. if(read == elementLength){
  357. data.add(element);
  358. read = 0;
  359. element = new byte[(int) elementLength];
  360. }
  361. }
  362. } catch (Exception e) {
  363. // TODO: handle exception
  364. } finally {
  365. if (fis != null) {
  366. fis.close();
  367. }
  368. }
  369. }
  370.  
  371. public void invertLargeFile(String source, String destination) throws IOException{
  372. RandomAccessFile rr = null;
  373. RandomAccessFile rw = null;
  374. try {
  375. rr = new RandomAccessFile(source, "r");
  376. rw = new RandomAccessFile(source, "rw");
  377. long pos = rr.length()-2;
  378. while(pos >= 0){
  379. char c = rr.readChar();
  380. rw.seek(pos);
  381. rw.write(c);
  382. pos-=2;
  383. }
  384. } catch (Exception e) {
  385. // TODO: handle exception
  386. } finally {
  387. if (rr != null){
  388. rr.close();
  389. }
  390. }
  391. }
  392.  
  393. public static void main(String[] args) throws IOException {
  394. ExamIO examIO = new ExamIO();
  395.  
  396. TestExam.testMove(examIO);
  397. TestExam.testDeserialize(examIO);
  398. TestExam.testInvertFile(examIO);
  399. }
  400.  
  401. }
  402. ReadWrite
  403.  
  404.  
  405. package java.io;
  406.  
  407. import java.util.ArrayList;
  408. import java.util.List;
  409. import java.util.Random;
  410. import java.util.concurrent.Semaphore;
  411.  
  412. public class Reader extends Thread{
  413.  
  414. public static Semaphore event = new Semaphore(1);
  415. public static Semaphore Notify = new Semaphore(1);
  416. public static Random random = new Random();
  417.  
  418. public static void main(String[] args) throws InterruptedException {
  419. // TODO: kreirajte Reader i startuvajte go negovoto pozadinsko izvrsuvanje
  420. Reader read = new Reader();
  421. read.start();
  422.  
  423.  
  424. for (int i = 0; i < 100; i++) {
  425. Writer writer = new Writer();
  426. //TODO: startuvajte go writer-ot
  427. writer.start();
  428.  
  429. }
  430.  
  431.  
  432. // TODO: Cekajte 10000ms za Reader-ot da zavrsi
  433. read.join(10000);
  434. // TODO: ispisete go statusot od izvrsuvanjeto
  435. if(read.isAlive())
  436. {
  437. read.interrupt();
  438. System.out.println("Terminated reading");
  439. }
  440. else
  441. System.out.println("Finished reading");
  442. }
  443.  
  444. /**
  445. * Ne smee da bide izvrsuva paralelno so write() metodot
  446. */
  447. public static synchronized void read() {
  448. System.out.println("reading");
  449. }
  450.  
  451.  
  452. public void run() {
  453. int pendingReading=100;
  454. while (pendingReading>0) {
  455. pendingReading--;
  456. // TODO: read() metodot ne smee da se izvrsuva paralelno so write() od Writer klasata
  457. try {
  458. Notify.acquire();
  459. event.acquire();
  460. read();
  461. event.release();
  462. } catch (InterruptedException e) {
  463. // TODO Auto-generated catch block
  464. e.printStackTrace();
  465. }
  466.  
  467. }
  468.  
  469. System.out.println("Done reading!");
  470. }
  471. }
  472.  
  473.  
  474. class Writer extends Thread{
  475.  
  476. public Integer duration;
  477.  
  478. public Writer() throws InterruptedException {
  479. this.duration = Reader.random.nextInt(1000);
  480. }
  481.  
  482.  
  483. /**
  484. * Ne smee da bide povikan paralelno
  485. * @throws InterruptedException
  486. */
  487. public static synchronized void write() throws InterruptedException {
  488. Reader.event.acquire();
  489. System.out.println("writting");
  490. Reader.Notify.release();
  491. Reader.event.release();
  492. }
  493. public void run() {
  494. try {
  495. Thread.sleep(this.duration);
  496. write();
  497. } catch (InterruptedException e) {
  498. // TODO Auto-generated catch block
  499. e.printStackTrace();
  500. }
  501. }
  502. }
  503. 5.Juni 2017 (moja)
  504.  
  505.  
  506. if [ $# != 3 ]
  507. then
  508. echo " USAGE: $0 Source Destination "
  509. exit 1
  510. fi
  511.  
  512. if [ ! -d $2 ]
  513. then
  514. mkdir $2
  515. fi
  516.  
  517. for dat in ls $1
  518. do
  519. files=`ls -l $1 | grep '^-' | cat $dat | grep 'for' | awk '{print $0;}'`
  520. done
  521.  
  522. for i in $files
  523. do
  524. date=`ls -l $i| grep '^-' | awk '{ print $8;}'`
  525. for j in ls $2
  526. do
  527. if [ $date == `ls -l $j | awk '{ print $8;}'`]
  528. then
  529. pat=`pwd $i`
  530. celpat=`pat$\$date`
  531. cat celpat >> $3
  532. fi
  533. else
  534. cp $1\$file $2\$file
  535. fi
  536. done
  537. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement