作者 主題: crontab 中執行 cp 會自動覆寫檔案內容  (閱讀 1286 次)

0 會員 與 1 訪客 正在閱讀本文。

fedora

  • 憂鬱的高中生
  • ***
  • 文章數: 99
    • 檢視個人資料
在 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,結果居然可覆蓋原檔案內容,
這是怎麼回事??

fedora

  • 憂鬱的高中生
  • ***
  • 文章數: 99
    • 檢視個人資料
Re: crontab 中執行 cp 會自動覆寫檔案內容
« 回覆 #1 於: 2018-04-04 20:57 »
我知道了,因在排程中的 cp 是指令非別名。

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17393
    • 檢視個人資料
    • http://www.study-area.org
Re: crontab 中執行 cp 會自動覆寫檔案內容
« 回覆 #2 於: 2018-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

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5384
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: crontab 中執行 cp 會自動覆寫檔案內容
« 回覆 #3 於: 2018-04-10 13:43 »
雖然結果沒錯, 不過好像 touch 錯檔名, 會被誤認第一個能執行是因為沒有檔案...

這個要看  expand_aliases 是不是打開. 如果要在 script 裡頭用, 先執行 shopt -s expand_aliases 之後, alias 就可以用了.
而且如果是外部的 alias, 還要 source 載入一次才能用.
« 上次編輯: 2018-04-10 13:46 由 twu2 »