① Ubuntu里怎麼運行腳本
1、點擊欄一個終端,或者是右鍵把終端打開了。
② ubuntu中shell腳本怎麼寫
jdk源里有
腳本就chmod
755
XX
sudo
./XXX
ubuntu下最好不要用sh
XX來運行腳本
ubuntu默認的system
shell為dash,只有嚴格符合posix標準的腳本才能用sh
XX來運行
否則用bash
XX或./XXX比較好
③ 幫忙寫個linux(ubuntu)下程序自動重啟的腳本
你好!~我寫了一個!~你可以試試,內存只知道查詢使用百分比,你可以按照你的總內存乘一下,把變數PRO換成你的fcitx,SIZE換成你算出來的內存大小,kill下再寫一行你的程序啟動的命令(我沒用過你那個軟體,不知道怎麼啟動),應該就可以了。水平有限,歡迎指出不足
#!/bin/bash
#
PRO="pro"
MEM=$(ps aux | grep pro | grep -v 'grep' | awk '{print $4}')
PID=$(ps aux | grep pro | grep -v 'grep' | awk '{print $2}')
declare -i SIZE=8
if [[ $MEM > $SIZE ]] ; then
kill -9 $PID
fi
④ 如何用shell腳本實現ubuntu用戶自動登錄
安裝
CentOS下安裝命令很簡單,如下
sudo yum install expect
至於Mac用戶,可以通過homebrew安裝(需要先安裝homebrew,請自行Google)
brew install expect
測試腳本
我們寫一個簡單的腳本實現scp拷貝文件,在腳本里配置密碼,保存為scp.exp如下
#!/usr/bin/expect
set timeout 20
if { [llength $argv] < 2} {
puts "Usage:"
puts "$argv0 local_file remote_path"
exit 1
}
set local_file [lindex $argv 0]
set remote_path [lindex $argv 1]
set passwd your_passwd
set passwderror 0
spawn scp $local_file $remote_path
expect {
"*assword:*" {
if { $passwderror == 1 } {
puts "passwd is error"
exit 2
}
set timeout 1000
set passwderror 1
send "$passwd\r"
exp_continue
}
"*es/no)?*" {
send "yes\r"
exp_continue
}
timeout {
puts "connect is timeout"
exit 3
}
}
注意,第一行很重要,通常我們的腳本里第一行是#!/bin/bash,而這里是你機器上expect程序的路徑,說明這段腳本是由expect來解釋執行的,而不是由bash解釋執行,所以代碼的語法和shell腳本也是不一樣的,其中set passwd your_passwd設置成你自己的密碼,然後執行如下命令
./scp.exp ./local_file user@host:/xx/yy/
執行前確保scp.exp有執行許可權,第一個參數為你本地文件,第二個為遠程主機的目錄,運行腳本如果報錯「connect is timeout」,可以把超時設長一點,第二行set timeout 20可以設置超時時間,單位是秒。腳本執行效果如下
還能做什麼
細心的同學一定發現了,其實expect提供的是和終端的一種交互機制,輸入密碼只是其中一種應用形式,只要是在終端阻塞需要輸入時,都可以通過expect腳本完成自動輸入,比如前面腳本里配置了兩種交互場景,一種是終端提示"password:"時輸入密碼,還有一種是提示"yes/no)?"時輸入「yes」,如果和遠程主機是第一次建立連接,執行scp.exp腳本效果是這樣的
所以我們可以根據終端的提示來配置輸入命令,這樣就能達到了自動化的效果。至於處理其它交互場景,只需要照著上面的腳本依葫蘆畫瓢就行了
⑤ ubuntu shell腳本的指令問題
如果說是 declare 命令不能用,那原因是由於你用的不是bash.如果是其他命令(你最好列出來具體的命令名字),要麼是由於你沒有使用和《鳥哥》里所使用的同樣的shell,要麼就是你的系統里沒有安裝對應的軟體。
比方說,有的命令是shell自帶的命令,如declare, let 等,如果你發現不能用,那是由於使用的shell 不同或者版本不同。
有的命令不是shell自帶命令,而是系統中裝的一些工具軟體, 比如 find, tar, grep 等等,這種類型的命令數量遠大於shell自帶命令,在ubuntu默認安裝中,很可能有一些沒有安裝,需要你自己去裝。
所以具體你缺什麼命令,不一定是shell的問題,也可能是你沒有安裝對應軟體包。
最後,建議你還是用bash,畢竟是最流行的shell,大多數人,大多數教程,都講得是它,所以不建議你初學時用其他shell,等對linux shell有一定了解後,再換到自己喜歡用的shell會比較合適。
⑥ 在ubuntu的終端中運行腳本文件的問題
.sh後綴是無關緊要的東西,linux的文件是不根據擴展名來判斷文件類型的,是否有.sh後綴完全不能說明該文件是否為腳本文件,只是用.sh後綴向用戶表示一下這是一個shell腳本。
linux下定位一個文件需要該文件完整文件名。該文件然來是什麼名字就敲什麼名字,可以通過tab鍵自動補全。
「bash: /usr/local/bin/XXX.sh:csh:損壞的解釋器: 沒有該文件或目錄」
至於報錯的問題,需要在腳本的第一行寫上完整的路徑
這個路徑可以用命令which csh得到
⑦ ubuntu shell 腳本 內容意思是什麼啊
補充和修正樓上的:
while :
-------------- :表示空指令,相當於 while true,一直循環
if ; then
--------------這里條件可以為空嗎?我也沒見過。
sleep 10
--------------暫停10秒
==============================================================
那條件就是:上面的ping指令執行失敗,即網斷。
$? 表示上一條命令的執行結果,0表示成功,其他值表示失敗。
所以 if 語句這樣寫:
if [ $? -ne 0 ]; then
kill -9 `pidof mystar`
./mystar &
fi
網斷的情況下就強制殺掉 mystar 進程然後將它重新啟動。
⑧ ubuntu 下執行shell腳本的問題
誒!你還要去好好去玩一下Linux(不要用圖形系統),你問的這些問題,真不好解釋
1,chmod +x test.sh:將test.sh變成可執行許可權。
2,test.sh 第一行有"#!/bin/sh」 告訴解釋器在什麼位置。
3,第一步test.sh變成可執行了,./test.sh(運行當前目錄下一個可執行文件,這是一個shell腳本,需要解釋器,如果有"#!/bin/sh」通過sh解釋,如果沒有會報錯沒這個命令)。
4,./test.sh(第三步我以解釋什麼意思);運行test.sh(將同過path路徑去找這個命令,顯然這個tesh.sh這個文件不在你path路徑下,你怎麼能運行呢)。
5,sh test.sh(sh在/bin目錄下也就是已經假如path路徑,用sh命令解釋你這個腳本)
⑨ ubuntu運行放在桌面的shell腳本
你得先進入桌面文件夾,或者指定腳本所在位置:
cd~/桌面
chmod+x1.sh
./1.sh
或者:
chmod+x~/桌面/1.sh
~/桌面/1.sh
⑩ ubuntu 腳本運行許可權
先用ll filename命令查看下文件許可權,還有就是要保證你的腳本是在ext格式的磁碟里,不是在windows類型的格式里