**實現
讓普通使用者使用sudo命令編寫乙個指令碼,指令碼內容為:設定定時任務,每隔5分鐘,輸出「當前使用者名稱_時間」到/tmp/output.txt中,時間格式為: ***x-yy-zz aa:bb:cc。
注意:整個題目答案只有乙個指令碼檔案,且指令碼要分別在本地和雲端成功執行。
本地作業系統:windows 10
本地虛擬機器執行平台:vmware workstation pro 14
本地虛擬機器映象:centos-7-x86_64-minimal-1908.iso
雲伺服器提供商:阿里雲計算****
linux發行版本及版本號:centos 7.6 64位
一般情況下,設定定時任務需要兩個檔案。乙個是定時任務檔案,用於記錄定時詳情和待執行的指令碼位置;另乙個是指令碼檔案,用於記錄待執行的操作。由於題目要求結果只能有乙個指令碼檔案,故我們需要讓指令碼檔案既能建立和執行定時任務檔案,又能執行定時任務規定的內容。
可以使用 if…else… 語句:
(1)在 if 語句中檢查定時任務檔案是否已經建立;
(2)如果沒有,則建立定時任務檔案後開始定時服務;
(3)如果有,則說明已經有定時任務檔案正在執行,且現在已經到達執行定時任務內容的時刻,於是在 else 語句中存放待執行操作的**即可。
#! /bin/bash
# 安裝crontab服務
sudo yum -y install crontabs
# 建立定時任務
filepath=
`pwd
`"/crontest"
# 定時任務檔案設定在當前工作目錄下if[
! -f "$filepath"];
then
# 檢視定時任務檔案是否已經存在
touch
$filepath
# 建立定時任務檔案
echo
"*/5 * * * * "
`pwd
`"/指令碼名.sh"
>
$filepath
# 設定定時任務內容,此處認為本指令碼在當前工作目錄下
# 提交給cron程序,此時會在/var/spool/cron目錄下生成執行檔案,檔名就是使用者名稱
crontab
$filepath
# 設定普通使用者擁有執行/var/spool/cron目錄的許可權
cd /var/spool
sudo
chmod o+rx cron
cd ~
sudo
service crond restart # 開啟crontab服務
else
# 此時定時任務檔案存在且正在執行,所以現在開始執行定時任務內容
name=
`whoami
` # 獲取當前使用者名稱
time=
`sudo
date
"+%y-%m-%d %h:%m:%s"
` # 按照格式要求獲取日期
echo
"$_$"
>> /tmp/output.txt
fi
在本題中,我們認為所編寫的指令碼檔案除了第一次被我們執行以外,都是由正在執行的定時任務滿足時間點後去執行的。所以,如果要修改定時任務內容,在執行修改後的指令碼前,請先刪除定時任務檔案。 linux下面的sudo命令
sudo 表示 superuser do 它允許已驗證的使用者以其他使用者的身份來執行命令。其他使用者可以是普通使用者或者超級使用者。然而,大部分時候我們用它來以提公升的許可權來執行命令。apt 是linux下的一款安裝包管理工具,是乙個客戶 伺服器系統。sudo apt get是用來安裝linux...
Linux中su命令與sudo命令
ps 前幾天,實驗室的同學問到為什麼sudo cd命令不行,我當時幫他解決了這個問題,但是我想了想我自己也不太清楚為什麼sudo cd不行,而需要用到su root然後再使用cd命令。所以自己在網上找了一些資料,並整理了一下發表出來,在自己忘了的時候自己也可以查閱一下!一 linux下的su命令 s...
學習linux命令su和sudo
出於安全考慮,我們往往不使用root登入,而用一般賬號來管理,但有時一些許可權不夠,必須要用root使用者,其實系統提供了兩個命令su和sudo來解決這個問題,這裡先介紹這兩個命令的常見用法,然後對它們使用再進行下對比。su是簡單用法 su的用途是讓使用者暫時改變登入者的身份,變更時要輸入所要變更使...