今天面試的一道題,我不會做

發表于:2007-06-08來源:作者:點擊數: 標簽:
:(:( 每天12:10,把/tmp目錄下大于1M的文件復制到/save目錄下。 :(:( race 回復于:2003-08-16 18:25:14 厲害厲害 zhangzzs 回復于:2003-08-16 18:28:11 我也不會呀.這個是要寫腳本吧,可是我一點腳本都不會寫. blazewater 回復于:2003-08-16 18:44:05 好

:(  :( 

每天12:10,把/tmp目錄下大于1M的文件復制到/save目錄下。

 :(  :(

 race 回復于:2003-08-16 18:25:14
厲害厲害

 zhangzzs 回復于:2003-08-16 18:28:11
我也不會呀.這個是要寫腳本吧,可是我一點腳本都不會寫.

 blazewater 回復于:2003-08-16 18:44:05
好像在crontab中可以定時做某些任務,具體看man;
然后寫個腳本復制文件不就可以了么
腳本結構可以如下:
#!/bin/sh
files=`ls -l /tmp |awk '{if (文件大小那一項 > 1M) print 文件名那一項}'`
for file in $files 
do
    cp $file /save
done
echo "backup OK!"

寫的比較簡單

 yuwang007 回復于:2003-08-16 18:45:10
crontab -e 
     10 12  * * *   /save.sh



vi  /save.sh

#!/bin/sh
AWK=/usr/bin/awk 
GREP=/usr/bin/grep 
for i in `ls -tr /tmp/ | $GREP -v ^d | $AWK  '{ if ($5>1048576)  print  $9 }'`
do
      cp  -f  /tmp/$i     /save
done

 w8u8 回復于:2003-08-16 21:41:47
我看不懂,
唉,我真的是太菜了。

 Liu_xp2003 回復于:2003-08-16 21:51:10
能看懂,現在叫我寫,估計功力不夠! :oops:

 aerolite 回復于:2003-08-16 23:38:36
沒有這么復雜吧,這樣做就可以了
crontab -e 
10 12 * * * find /tmp -size +1048576c -exec cp $ /save \;

 czw1413_cn 回復于:2003-08-17 11:17:27
呵呵
真夠簡練的
是那么個意思
行不行你試了嗎

 78020281 回復于:2003-08-17 11:26:44
高手,  能看懂些,但是寫不出來。

 Arthurking 回復于:2003-08-17 14:30:04
crontab -e 
也是腳本里的嗎?
第一次啟動后是不是就每天執行了?

 coffee and tea 回復于:2003-08-17 15:06:01
真是好貼子~我估計此貼能激起很多人學習shell的興趣呢






 wanglp2000 回復于:2003-08-17 15:39:58
這些討論我覺得很......(滑稽用的多些)
這可是系統管理員最簡單的活了,難道這也叫難啊?
看來.........

 itisok96 回復于:2003-08-17 16:42:09
強的說

 yuwang007 回復于:2003-08-17 18:47:38
10 12 * * * find /tmp -size +1048576c -exec cp {} /save \; 



   我沒用過那種  find    + , man里沒找到,可能沒仔細看

 rocazj 回復于:2003-08-18 08:55:05
1、find . -size +200c -exec cp {} 1 \;
將所有大于200字節的文件拷貝到子目錄1下。

2、find . -size +26m -exec cp {} 1 \;
將所有大于26兆字節的文件拷貝到子目錄1下。

3、find . -size +1k -exec cp {} 1 \;
將所有大于1K字節的文件拷貝到子目錄1下。

 houji 回復于:2003-08-18 11:03:12
rocazj 的方法很簡單,好使。

 xiongshoufen 回復于:2003-08-18 13:37:40
我連看讀看不懂,好慘?。。?!

 twlogin 回復于:2003-08-18 13:49:51
做一個系統管理員不懂shell是無法想象的

 welbird 回復于:2003-08-18 14:12:24
又學了一招,嘿嘿

 6liuy 回復于:2003-08-18 16:23:47
不錯,使用find命令

 okwiner 回復于:2003-08-18 16:25:42
shell和編程是一回事么?用什么控制命令執行的邏輯?

 llc107 回復于:2003-08-18 16:38:26
[quote:505116de8a="aerolite"]沒有這么復雜吧,這樣做就可以了
crontab -e 
10 12 * * * find /tmp -size +1048576c -exec cp $ /save \;[/quote:505116de8a] 

nice done!

 JuGar 回復于:2003-08-18 23:41:21
find很好用的呀~~

 寒帶魚 回復于:2003-08-20 22:20:56
xarg也可以撒

 snaking 回復于:2003-08-24 13:19:27
收到

 blazewater 回復于:2003-08-24 15:07:14
shell實際上是功能很強大的武器
不同的功能都可以實現同一個功能
所謂條條大陸通羅馬嘛
不要在這上面浪費口水了
還是多看看書吧

 浦東本地人 回復于:2003-08-24 23:15:27
沒有想到那么菜!!!!  
上次我應聘時還要現場寫個POSTSCRIPT的腳本呢,足有84行長.還必須用PERL和KSH寫兩個版本.

 wanfei 回復于:2003-08-25 12:28:56
這個帖子不錯。應表揚

 akai_feng 回復于:2003-08-25 13:38:46
說句老實話,好像這已經是熟練SA的最低要求了,不然,也不會出現在面試題

good good study
day day up

 ustcboy 回復于:2003-08-26 15:38:48
http://ustcboy.51.net/download/sa239.rar
    http://ustcboy.51.net/download/sa299.rar


sa299不是教材/好像是做的幻燈片
希望對大家學習有幫助

 tiaozao 回復于:2003-08-27 00:33:46
[quote:5a49ba9be2="rocazj"]1、find . -size +200c -exec cp {} 1 \;
將所有大于200字節的文件拷貝到子目錄1下。

2、find . -size +26m -exec cp {} 1 \;
將所有大于26兆字節的文件拷貝到子目錄1下。

3、find . -size +1k -exec cp {} ..........[/quote:5a49ba9be2]     

有人試過這個方法么?
我試了,不可以

 老同志lawson 回復于:2003-12-01 17:48:00
腳本如下:
#!/usr/bin/bash
cd /tmp
for file in `ls`
do
if [ -f $file ]
then
file2=`ls -al $file|awk '{print $5}'`
long=`expr 1024 \* 1024`
if [ "$file2" -gt "$long" ]
then
cp $file /save/
fi
else
continue
fi
done
cd ..

 xyf721127 回復于:2005-02-14 00:15:58
看不懂啊,真是很著急!

 Linux@初學者 回復于:2005-02-14 13:45:13
汗一下。

 jndu 回復于:2005-02-14 14:15:15
1M=1048576c ?

怎么得出來的?

不應該是1024*1024*1024=1073741824 么?

 bosshoss_cn 回復于:2005-02-14 16:22:56
我也問一下:
要求在/save目錄下自動生成以日期為名字的子目錄再COPY行否?
如何實現?
格式:YYYY-MM-DD

 驍騎尉 回復于:2005-02-15 09:11:59
[quote:67bb23a78f="tiaozao"]    

有人試過這個方法么?
我試了,不可以[/quote:67bb23a78f]

find . xxxx

這個表示find的操作是從當前目錄開始執行的。前面的題目要求是對/tmp目錄下的文件進行操作,所以要使用 find /tmp xxxx

 samshi 回復于:2005-02-16 13:52:15
crontab -e 
10 12 * * * find /tmp -size +1048576c -exec cp {} /save \;

 maping 回復于:2005-02-16 17:46:03
上面說的我也好多看不懂,翻書找到下面內容,和大家共享!



Crontab 安排某個命令有規律地在特定的時間執行
語法:crontab filename
crontab options [user_name]
概述
crontab 命令允許用戶提交一個工作列表,這些工作是在用戶指定的時間運行。這些命令保存被稱為crontab 的文件中。名為cron的系統命令讀取crontab文件,并運行這些命令。如果在用戶的crontab文件的命令行中沒有進行輸出重定向,那么才采用標準和錯誤輸出。
參數
在第一種語法格式中,filename是包含crontab命令的一個文件名。如果用戶使用一個連字號作為文件名,crontab將從用戶鍵入的標準輸入中讀取數據;以CONTROL-D結束。
第二種語法格式中的user-name 能夠由超級用戶來指定,從而能為一個特別的用戶改變crontab文件。
選項
 -e    edit.在用戶的crontab文件上運行由EDITOR這個shell變量指定的文本編輯器,使得用戶可以進行添加,改變或者刪除文件的全部。在創建/編輯crontab之后,這個選項將安裝它。
  -l    list 顯示用戶的crontab文件的內容
  -r    remove 刪除用戶的crontab文件。
注意
每條crontab命令以5個空格風隔字段開始,指定了命令應該什么時候運行:
l 分鐘(0-59)
l 小時(0-23)
l 某月的一天(1-31)
l 某年的一月(1-12)
l 某星期的一天(0-6,0=Sunday)
星號代表所有可能的植。
示例
在下面的示例中,root用戶設定了一個由cron在沒個周六的早上2:05開始執行的命令,這些命令將新五天中系統中沒有被訪問到的core文件全部刪除。ROOT用戶從控制臺直接輸入命令。
# crontab
5 2 * * 6 /usr/bin/find / -name core –atime +5 –exec rm {} \;
CONTROL-D
紊亂在用戶的crontab 文件中增加一個條目,運行帶有-e選項的crontab命令。-l選項顯示了用戶crontab 文件的一個副本。
# crontab –l
5 2 * * 6 /usr/bin/find / -name core –atime +5 –exec rm {} \;

 victor_hu 回復于:2005-02-17 14:42:12
crontab -e
0 12 * * * find /tmp -size +1048576c -exec cp -r {} /save \;

 victor_hu 回復于:2005-02-17 14:57:20
試試下面的:

crontab -e
0 12 * * * find /tmp -size +1048576c -exec cp {} /save \;

 freedemon 回復于:2005-02-17 15:36:23
[quote:f233a80069="aerolite"]沒有這么復雜吧,這樣做就可以了
crontab -e 
10 12 * * * find /tmp -size +1048576c -exec cp $ /save \;[/quote:f233a80069]

不錯

思路正確

再嚴謹一點的話可以加上-type f,限定常規文件,避免一些可能發生的權限錯誤

find [PATH] -type f -size +******c -exec "......."\;
只要用find查找出對應目錄中常規file類型,大小大于(+)1024k的文件,使用find的exec參數調用命令就可以了。

幾個需要注意的細節:
1. -type f限定文件類型;
2. -size參數默認數值單位為block(長度512B的Block),如果要用字節作為單位,需要在最后加c,比如1024c,就代表1024Byte;+/-表示大于或小于,否則就代表精確相等;
3. 使用exec進行文件備份命令的執行;
4. 使用crontab定時調用find一條命令就可以了,根本不必寫腳本。

.

 sun_boy 回復于:2005-02-17 15:55:02
發現自己很多東西學的還是不夠熟練!呵呵!

 xxxxl 回復于:2005-02-18 10:11:13
在solaris下是這樣:
crontab -e 
10 12 * * * find /tmp -type f -size +1048576c -exec cp {} /save \;

 fywlily 回復于:2005-02-28 13:13:11
知道個意思,具體的寫估計一遍要寫錯

 sbleo 回復于:2005-02-28 14:11:24
現場那么緊張估計寫個大概,面試官也不會太為難的,不過如果不知道怎么下手就要自我檢討一下了。

 Crazy土匪 回復于:2005-03-29 21:08:39
能看懂,寫不出來。呵呵

 nhzjoke 回復于:2005-03-29 23:31:51
[quote:eff51c2489="aerolite"]沒有這么復雜吧,這樣做就可以了
crontab -e 
10 12 * * * find /tmp -size +1048576c -exec cp $ /save \;[/quote:eff51c2489]

樓上的是正解!

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97