iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
自我挑戰組

IT工作中曾遇到的問題系列 第 21

幾個小功能,但是有需要時還蠻好用的

  • 分享至 

  • xImage
  •  

Solaris 10 修改檔案的更新日期

在Solaris 10的平台下新增檔案時,突然想到如果要修改檔案的更新日期,不知道可不可行,致於修改更新日期有何用途,那可不好說…

不過查了文件,發現是有方法可以修改,利用touch指令可以變更日期,參數如下:
-a = accessed
-m = modified
-t = timestamp - use [[CC]YY]MMDDhhmm[.ss] time format

測試如下圖
https://ithelp.ithome.com.tw/upload/images/20230920/20156403wgbGV3BQOw.png

crontab 隔週執行程式

原本Oracle DB統計值更新的排程程式是用Crontabl每週定時執行一次,但是後來要改為每兩週執行一次,但是Crontab並沒有隔週的參數選項。

此時可以用第幾週來判斷是否執行程式,程式如下列兩種方式:

方式一,寫在script內

#!/bin/sh
v_ck=`date +%W`
v_run=`expr $v_ck % 2`

if [ $v_run = 1 ];
   then backup.sh
        exit 1
   fi

方式二,利用test指令來判斷

10 10 * * *  su - user | test $(( $( date +%W ) %2 )) -eq 1 && backup.sh

date +%W是指取得週數,例如:2023/9/21是今年的第38週
expr $v_ck % 2是用週數除以2取餘數,可以得到0或1,就可以判斷是否為隔週

Solaris 批次更改檔名Script

因為剛好小專案有需要,所以試著寫了一個簡易的Script來批次更改檔案名稱,不然檔案數量有點多。

如下我想把檔名CH開頭的tmp檔全部改成FK,把該script放到要變更檔案的目錄下:

#!/bin/sh
for old_name in CH*.tmp
do
echo $old_name | sed s/CH/FK/g >tmp.log
new_name=`tail -1 tmp.log`
cp $old_name new_dir/$new_name
done

sed s/CH/FK/g >tmp.log是指用sed將檔名文字變更後,寫到temp.log檔,sed只能處理文字,所以這裡並不會真的變更檔名
new_name=`tail -1 tmp.log`是指用tail加上參數-l來取得tmp.log的最後一行,配合上面的程式,取出的是新的檔案名稱
最後用cp實際複製檔案並更名


上一篇
Oracle 執行Create Table很慢的一次案例
下一篇
Raspberry pi 取得Oracle DB的資料
系列文
IT工作中曾遇到的問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言