linux腳本換行
1. 在linux命令行中要怎麼換行
就能換行 並且不影響你繼續寫命令,
出現>可以繼續輸入命令。
例如:apache源代碼安裝,
./configure --prefix=/export/apache
--enable-moles=most
--enable-mods-shared=all
--enable-so
--enable-rewrite
2. linux shell腳本換行問題
不是換行,而是續行,就是說一行寫不下了,下一行繼續,而不是一個命令的結束
你說報java: command not found,跟沒有關系,錯誤的原因:
你沒有裝java
path沒有設對,echo $PATH看一下java的執行文件在不在其中的一個目錄,沒有,加之
3. Linux Shell命令換行問題
xxxxxxx \
xxxxxxxx
或者 xxxxxxx ; xxxxxxx ;xxxxxxx
\ 後面回車不會馬上執行本條命令而是換行繼續。; 是運行完前面就繼續後面的,同樣 && 是前面正確就運行後面,|| 是前面運行不正確就運行後面。
放棄上一行好像不行。反正我是不會……
命令行裡面 ^C 就到下一行了上面那行不會被執行。如果你是在文本編輯器裡面寫程序,放棄本行可以看當前文本編輯器的操作手冊,有刪除本行的快捷鍵。
我覺得你這個「代碼」絕對是用錯詞了。應該是「命令」。
4. 在Linux部署進程守護腳本遇到的坑
昨天在Linux做個進程守護腳本時發生了幾個小問題,實屬不該。先總結如下,在以後的實踐中一個避免這樣的問題。同時針對cron,再次深入學習實踐。
1、換行符問題
腳本與運行報錯「:badinterpreter:Nosuchfileordirectory」。
腳本在windows下編輯,有幾條命令是直接復制過來使用的,雖然vs code可以在右下角選擇行尾序列,但是在實際運行時還是提示無法識別/r,每一行都多了個^M 。
\r\n: Dos和Windows採用回車+換行(CR+LF)表示下一行,即^M$
\n: 而UNIX/Linux採用換行符(LF)表示下一行
\r: 蘋果機(MAC OS系統)則採用回車符(CR)表示下一行
2、= 賦值問題
筆者在使用if條件表達式時,知道條件要放在方括弧之間,並且要有空格。誤以為變數賦值=也要空格,運行時發現變數無法識=識別,後來才知道變數賦值=不能有空格。
3、cron定時任務的環境變數問題
用戶的crontab定時任務不會使用默認的變數, 需要寫全路徑,包括crontab調用的腳本裡面 。而系統cron定時任務是由定義環境變數的。MAILTO是表示例行性命令發生錯誤時,會將錯誤訊息郵件傳給root,伺服器中關閉postfix,導致郵件發送不成功,全部小文件堆積在/var/spool/postfix/maildrop/裡面。
4、cron中執行的程序有輸出內容,輸出內容會以郵件形式發給cron的用戶,而sendmail沒有啟動所以就產生了/var/spool/mail目錄下的那些文件,日積月累可能撐破磁碟。在cron中命令後面加上 >/dev/null 2>&1 來不輸出。
5、crontab中的指令需要root,配置/etc/sudoers文件來保證sudo可用,其實可用使用系統任務計劃,指定root來執行即可。
最後,筆者專注於使用cron,現在在以前的文章(樹莓派上測試)- Linux crontab定時任務詳細分解 的基礎上,在騰訊雲伺服器centos上補充以下cron的知識。
用戶計劃任務 :
1、crond時cron的守護進程,crond是由多個配置文件和系統范圍內的文件控制的,每個用戶對應一個配置文件。crond守護進程是cronie軟體的一部分。用戶的配置文件在/var/spool/cron/username。
2、crontab命令
crontab -e 編輯當前用戶的定時計劃
crontab -l 列出當前用戶的定時計劃
crontab -r 刪除當前用戶的所有定時計劃
crontab filename 刪除當前用戶的所有定時計劃,並從filename中讀取作業,如果未指定任何文件,則使用stdin 。
3、格式,另外*/x表示間隔x個周期。 用戶計劃任務沒有user-name欄位!
*/7 9-16 * jul 5 command表示7月的每周五的上午9到下午5點 間,每七分鍾執行一次。
系統計劃任務:
1、系統cron不是由crontab來執行的,而是在一組配置文件中定義的,配置文件多了一個欄位-用戶欄位,指定作業在那個用戶下運行。
2、系統計劃任務儲存在/etc/crontab、 /etc/cron.d/* 以及/etc/cron.* ,/etc/crontab的語法規則參照上面的圖。 /etc/cron.d/時軟體產生的一些更新任務,一般不在裡面做操作。
3、預定義作業,cron.daily、cron.hourly、cron.monthly、cron.weekly下面儲存的是可執行腳本。
/etc/cron.hourly/*腳本是使用runparts命令從/etc/cron.d/0hourly中定義的,表示每小時的第一分鍾將 /etc/cron.hourly/下面的腳本全部執行。
/etc/cron.daily、 /etc/cron.monthly、 /etc/cron.weekly也是使用runparts命令,但是是從/etc/anacrontab中執行的。
4、/etc/anacrontab語法規則
START_HOURS_RANGE=3-22,表示Anacron jobs will start between 3am and 10pm.
RANDOM_DELAY=45,The RANDOM_DELAY variable denotes the maximum number of minutes that will be added to the delay in minutes variable which is specified for each job.
上圖中,對於 /etc/cron.daily,那麼delay 會是 5 minutes + RANDOM_DELAY 。
接下來就是4個重要的參數:
period in days ,delay in minutes ,job-identifier, command
The period in days variable表示執行周期,每多少天運行一次該作業。
delay in minutes:上面提到的執行的延時,啟動作業前,crond等待的時間。
job-identifier:標識作業的唯一名稱,用做日誌記錄。是/var/spool/anacron中文件的名稱,檢查該作業是否已運行,/etc/anacrontab啟動作業時,會更新此文件的時間戳,檢查作業上次運行的時間。anacron 會分析現在的時間與時間記錄文件所記載的上次執行 anacron 的時間,將兩者進行比較,如果兩個時間的差值超過 anacron 的指定時間差值(一般是 1 天、7 天和一個月),就說明有定時任務沒有執行,這時 anacron 會介入並執行這個漏掉的定時任務,從而保證在關機時沒有執行的定時任務不會被漏掉。這也是為什麼/etc/cron.{daily,weekly,monthly} 目錄中的定時任務只會被 anacron 調用,而 /etc/cron.hourly/被cron調用 。
command:執行命令可以是普通命令或者腳本。
5、cron的訪問控制
/etc/cron.allow、 /etc/cron.deny ,以決定哪些用戶可以使用調度服務。
如果只有cron.deny文件,而cron.allow文件不存在,則除了黑名單之外的所有用戶都可以使用;
如果只有cron.allow文件存在,而cron.deny文件不存在時,則只有白名單用戶才可以使用,,包括root。
如果兩個文件都存在,則忽略cron.allow文件。
如果兩個文件都不存在,每個用戶都可以訪問。
5. Linux的shell腳本的read怎麼換行輸入
在末尾加反斜桿\,即可換行輸入