酷!學園

技術討論區 => Linux 討論版 => 主題作者是: fedora 於 2018-04-04 16:42

主題: crontab 中執行 cp 會自動覆寫檔案內容
作者: fedora2018-04-04 16:42
在 centos 7 中我用 root 身分於 /etc/crontab 設定排程做測試:
* * * * * root cp /etc/passwd /tmp/testfile

我的認知是,一開始跑 cp 會產生 testfile 檔,但下一分鐘執行 cp 應該無法正常覆寫檔案內容才是啊,
因用root 執行 cp 是 cp 別名 cp='cp -i',命令列上遇目的檔存在會問是否覆寫。

但我在下一分鐘尚未跑 cp 前(testfile已存在),修改內容 cp /etc/fstab /tmp/testfile,結果居然可覆蓋原檔案內容,
這是怎麼回事??
主題: Re: crontab 中執行 cp 會自動覆寫檔案內容
作者: fedora2018-04-04 20:57
我知道了,因在排程中的 cp 是指令非別名。
主題: Re: crontab 中執行 cp 會自動覆寫檔案內容
作者: netman2018-04-09 10:20
好像在 shell script 中都忽略 alias:

代碼: [選擇]
[kenny.chen@vmtest-linux tmp]$ touch 1.txt 2.txt
[kenny.chen@vmtest-linux tmp]$ ./1.sh
using alias...
not using alias...
cp:是否覆寫 ‘2.sh’? y
[kenny.chen@vmtest-linux tmp]$ cat 1.sh
#!/bin/bash

alias 'cp=cp -i'
echo "using alias..."
cp 1.sh 2.sh
unalias cp
echo "not using alias..."
cp -i 1.sh 2.sh
主題: Re: crontab 中執行 cp 會自動覆寫檔案內容
作者: twu22018-04-10 13:43
雖然結果沒錯, 不過好像 touch 錯檔名, 會被誤認第一個能執行是因為沒有檔案...

這個要看  expand_aliases 是不是打開. 如果要在 script 裡頭用, 先執行 shopt -s expand_aliases 之後, alias 就可以用了.
而且如果是外部的 alias, 還要 source 載入一次才能用.