Linux服務器使用相關筆記

 

各種與Linux 相關的命令 ,僅做筆記參考  略有重複或缺失,不影響觀看

 

護眼色

 199 237 204 | 172 206 174

 

repo相關命令

repo start dev --all 在在清單文件設定的分支基礎上全都切換到dev分支

repo start BRANCH_NAME [PROJECT_LIST]
參數BRANCH_NAME指定新的分支名稱,後面的PROJECT_LIST是可選的。如果指定了PROJECT_LIST,就表示只對特定的子項目創建分支,否則的話,就對所有的子項目創建分支

repo start dev platform/device platform/device/mstar  相當於在platform/device platform/device/mstar兩個倉庫創建dev分支
repo checkout dev 切換分支
repo checkout dev platform/device platform/device/mstar 當於在platform/device platform/device/mstar兩個倉庫切換到dev分支
repo abandon dev 刪除dev分支
repo status 查看修改的文件
repo status platform/device      查看device從倉庫的修改
repo push dev 用於向服務器提交代碼
repo remote rm dev 刪除遠程倉庫
repo manifest -0 android.xml 顯示manifest的文件內容
repo grep 對項目文件內容進行查找
repo version 顯示repo的版本號
repo upload 

git remote update 相當於對每一個remote源執行fetch操作
git rebase origin/branch 針對當前分支的跟蹤根治執行rebase操作
repo branch 查看代碼分支
repo forall -c git checkout -b 648-release 所有倉庫都執行這個命令
repo forall -c git pull  所有倉庫都執行這個命令-下拉

git 相關命令


git init 初始化一個倉庫 默認創建master分支

git reset 刪除暫緩區的提交
git reset --hard 標籤名  刪除此標籤的改動
git reset --hard HEAD^ 回退到上一個版本
1. git clean -df  第一個命令只刪除所有untracked的文件,如果文件已經被tracked, 修改過的文件不會被回退。
2. git reset --hard 而第二個命令把tracked的文件revert到前一個版本,對於untracked的文件(比如編譯的臨時文件)都不會被刪除。
git reset HEAD <file> 可以把暫存區的修改撤銷掉
git cherry-pick 標籤   /添加改動
git cherry-pick --abort //撤銷cherry-pick
git pull origin puze 合併指定分支代碼

git checkout -b  name創建一個新的分支並切換分支
git checkout name 切換一個分支
git push origin puze origin puze把本地庫推送到遠程
git status 查看緩存區狀態
    -un0 查看自己修改的
git diff 查看修改的內容
git show 標籤/查看此標籤修改的內容ean
git show 標籤 --stat 查看此次提交的文件
git commit 提交將緩存區修改提交到本分支
git branch 查看當前分支
            -a查看所有分支
git branch -av 查看所有分支和每個分支最新的提交
git branch name 創建一個新的分支
git branch -d <name> 刪除分支
git log 查看提交日誌
git log --pretty=oneline 簡化顯示從最近到最遠的提交日誌
git log --graph --pretty=oneline --abbrev-commit查看分支合併的情況
git remote 查看遠程庫
git pull 從遠程抓取分支,如果有衝突,要先處理衝突
git add 添加到緩存區
git checkout -b puze origin/puze 創建併合並此分支\
git checkout -b branch-name origin/branch-name 在本地創建和遠程分支對應的分支,分支的名稱最好一致
git branch --set-upstream branch-name origin/branch-name 建立本地分支和遠程分支的關聯
git reset –mixed:此爲默認方式,不帶任何參數的git reset,即時這種方式,它回退到某個版本,只保留源碼,回退commit和index信息
            :取消了commit ,取消了add
            ,是將git的HEAD變了(也就是提交記錄變了),但文件並沒有改變,(也就是working tree並沒有改變)。
git reset –soft:回退到某個版本,只回退了commit的信息,不會恢復到index file一級。如果還要提交,直接commit即可
            取消了commit
            實際上,是git reset –mixed id 後,又做了一次git add
git reset –hard:徹底回退到某個版本,本地的源碼也會變爲上一個版本的內容
                取消了commit ,取消了add,取消源文件修改
                .是將git的HEAD變了,文件也變了。
                
已經推送(push)過的文件,想從git遠程庫中刪除,並在以後的提交中忽略,但是卻還想在本地保留這個文件
執行命令 

git rm --cached 文件名                
                
                
更新                
git merge --no-ff E828_dev 
git revert 僅僅是撤銷某次提交
git commit 把暫緩區的所有內容提交到當前分支
git reset HEAD  文件 可以撤銷add提交

git push origin --delete [branch_name] 刪除遠程分支

修改.sh添加IP
運行.sh\
合併分支
git merge --no-ff develop
查看版本回退的版本號
git reflog
撤銷某文件的修改
git checkout - -文件名
刪除文件後從版本庫恢復文件s
git checkout -- 文件名
刪除分支:
git branch –d name
隱藏工作現場
git stash 
查看隱藏的工作現場
git stash list
恢復工作現場但是不刪除stash中保存的內容
git stash apply
刪除工作線程 
git stash drop
恢復工作現場並且刪除stash
git stash pop
git stash pop --index stash@{0}
要查看遠程庫的詳細信息
git remote –v
查看文件內容
刪除新增提交
git clean -df  

 git log |grep 6263 -C2
 查看所有log和顯示其詳細的分支和tag
 git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

git lg 讓git log顯示彩色簡潔的日誌書
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

git lg 讓git log顯示彩色簡潔的日誌書
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ci) %C(bold blue)<%an>%Creset' --abbrev-commit"

git 配置顏色 
git config --global color.ui auto
git config --global color.status auto 
git config --global color.diff auto 
git config --global color.branch auto 
git config --global color.interactive auto 

 查看全部log
  git log --graph --oneline
cd  .git 進去git庫
vi .ignore輸入讓git庫忽略的文件
git show-branch -a --color=always 顯示所有分支最新log和與服務器的提交的差別
git fetch更新
將LOG改爲輸出到1.log
 git log > ~/1.log
git push origin 本地分支:遠程分支   提交到遠程分支
        -f 強制推送到遠程
git push origin local_branch:remote_branch
git push origin --tags 提交打印的tag
 git tag -a sn-648-6.0-v1.2.0 -m "sn-648-6.0-v1.2.0" 添加tag到最新的提交上面
 git commit --amend 修改最後一次提交記錄
git fsck --lost-found 歷史操作記錄
git remote add origin [email protected]:dwqs/bless.git   把本地倉庫和遠程倉庫關聯起來
find .git/objects -type f | xargs ls -lt | sed 60q ,這裏 60q 的意思是最近60次的add

git diff 608e120 4abe32e --name-only | xargs zip update.zip 對比兩個版本的差異並打包

git diff cached 查看暫存區的不同


告訴git忽略對已經納入版本管理的文件 .classpath 的修改,git 會一直忽略此文件直到重新告訴 git 可以再次跟蹤此文件
$ git update-index --assume-unchanged .classpath

告訴 git 恢復跟蹤 
$ git update-index --no-assume-unchanged .classpath

查看當前被忽略的、已經納入版本庫管理的文件:
$ git ls-files -v | grep -e "^[hsmrck]"

替換字符 \r 替換爲空白
sed -i 's/\r$//' git.sh

git rm -r -n --cached name 列表查看要刪除的
git rm -r --cached name 刪除git對這些文件的跟蹤


linux 相關命令


linux新建用戶
adduser 用戶名
passwd 用戶名
samba服務器新建用戶
cd /etc/samba/ 當前目錄下修改smb.conf 文件
smbpasswd -a 用戶名    加samba密碼

加管理員權限/etc/sudoers

建立軟連接 ln -s /mnt/4TOne /home/zhuwang

dd刪除整行
ndd 刪除光標所在的向下n行,例如20dd則是刪除光標所在的向下20行
yy 複製
:s(substitute) 命令用來查找和替換字符串。
語法》 :{作用範圍}s/{目標內容}/{替換內容}/{替換標誌}
例如》 :%s/name/names/g 會在全局範圍(%)查找name並且替換爲names,所有出現的都會被替換(g)

find 筆記
在當前目錄下查找帶有'  '的.h文件並用顏色標識
find ./ -name '*.h' | xargs grep -3n --color ''
find ./ -name ".git" |xargs rm -rf 查找並刪除
find ./ -name ".git" -print -exec rm -fr {} \; 查找並刪除
git archive --format=zip HEAD `git diff --name-only 52fa787 d45a14b` > a.zip 從git裏面提取兩個commit之間變更過的文件

setprop 設置系統屬性
df 查看系統佔用的內存
設置默認安裝的位置
 pm set-install-location 0
查看APK默認預裝位置980
 pm get-install-location
cat -n或--number  yesuo.txt 由一開始對文件編號輸出
cat -n/--number  yesuo.txt >yesuo1.txt 由1開始編號後複製到yesuo1.txt
    -b/--number-nonblank    由1開始不編號空白行
    -s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換爲一行的空白行
  -v 或 --show-nonprinting

chattr 命令用於改變文件屬性
chattr +a file1 只允許以追加方式讀寫文件 
chattr +c file1 允許這個文件能被內核自動壓縮/解壓 
chattr +d file1 在進行文件系統備份時,dump程序將忽略這個文件 
chattr +i file1 設置成不可變的文件,不能被刪除、修改、重命名或者鏈接 
chattr +s file1 允許一個文件被安全地刪除 
chattr +S file1 一旦應用程序對這個文件執行了寫操作,使系統立刻把修改的結果寫到磁盤 
chattr +u file1 若文件被刪除,系統會允許你在以後恢復這個被刪除的文件 
chgrp    命令用於變更文件或目錄的所屬羣組
chgrp -v yesuo da.txt 更改文件所屬的用戶組
chmod 設置文件權限藉以控制文件如何被他人所調用
    若要rwx屬性則4+2+1=7;
    若要rw-屬性則4+2=6;
    若要r-x屬性則4+1=5
cmp    命令用於比較兩個文件是否有差異
cmp test.txt test1.txt比較文件是否相同
diff    命令用於比較文件的差異
diff  test.txt test1.txt比較文件參數百度
file test.txt      顯示文件類型
find test.txt        查找文件
find . -name "libutopia.so" |xargs rm -rf  查找並刪除

find . -name "*.c"    將目前目錄及其子目錄下所有延伸檔名是 c 的文件列出來。
find . -ctime -20    將目前目錄及其子目錄下所有最近 20 分鐘內更新過的文件列出
find . -type f -perm 644 -exec ls -l { } ;查找前目錄中文件屬主具有讀、寫權限,並且文件所屬組的用戶和其他用戶具有讀權限的文件
        -ctime n : 在過去 n 天過修改過的文件
        -size n : 文件大小 是 n 單位,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組
        -cmin n : 在過去 n 分鐘內被修改過
        -atime n : 在過去 n 天過讀取過的文件
        -amin n : 在過去 n 分鐘內被讀取過
indent命令用於調整C原始代碼文件的格式        
ln test.txt test            創建硬連接
                -b 刪除,覆蓋以前建立的鏈接
less test.txt         查看文件
                v 編輯文件 g已到最後一行
ps -ef |less         ps查看進程信息並通過less分頁顯示
locate     test.txt       從數據庫中查找文件 
lsattr test.txt           查看文件屬性
 mktemp                命令用於建立暫存文件
mmove test.txt test        #移動文件到目錄test中 
rm test.txt         刪除test.txt 文件價
    -r             刪除目錄
rm -rf dir1 刪除一個叫做 'dir1' 的目錄並同時刪除其內容 
rm -rf dir1 dir2 同時刪除兩個目錄及它們的內
slocate fdisk     #顯示文件名中含有fdisk關鍵字的文件的路徑信息    
mv     文件名 文件名    將源文件名改爲目標文件名
mv     文件名 目錄名    將文件移動到目標目錄
mv     目錄名 目錄名    目標目錄已存在,將源目錄
                    移動到目標目錄;目標
                    目錄不存在則改名
mv info/ logs         將info目錄放入logs目錄中。注意,如果logs目錄不存在,則該命令將info改名爲logs。
cp –r test/ newtest        使用指令"cp"將當前目錄"test/"下的所有文件複製到新目錄"newtest"下
        -l:不復制文件,只是生成鏈接文件
        -f:覆蓋已經存在的目標文件而不給出提示
## 生成ssh 密鑰文件
    ssh-keygen -t rsa

ls 查看當前目錄下所有文件
ls -l 查看文件的權限和所屬
pwd     顯示工作路徑 
ls -a 顯示隱藏文件 
ls *[0-9]* 顯示包含數字的文件名和目錄名 
mkdir dir1 創建一個叫做 'dir1' 的目錄' 
mkdir dir1 dir2 同時創建兩個目錄 
rm -rf /var/log/httpd/access 將會刪除/var/log/httpd/access目錄以及其下所有文件、文件夾
cp -a /tmp/dir1 . 複製一個目錄到當前工作目錄 
cp -a dir1 dir2 複製一個目錄 
touch -t 0712250000 file1 修改一個文件或目錄的時間戳
groupadd group_name 創建一個新用戶組 
groupdel group_name 刪除一個用戶組 
useradd user1 創建一個新用戶 
userdel -r user1 刪除一個用戶 ( '-r' 排除主目錄
passwd 修改口令 
passwd user1 修改一個用戶的口令 (只允許root執行
chown user1 file1 改變一個文件的所有人屬性 
bunzip2 file1.bz2 解壓一個叫做 'file1.bz2'的文件 
bzip2 file1 壓縮一個叫做 'file1' 的文件 
gunzip file1.gz 解壓一個叫做 'file1.gz'的文件 
gzip file1 壓縮一個叫做 'file1'的文件 
gzip -9 file1 最大程度壓縮 
rar a file1.rar test_file 創建一個叫做 'file1.rar' 的包 
rar a file1.rar file1 file2 dir1 同時壓縮 'file1', 'file2' 以及目錄 'dir1' 
rar x file1.rar 解壓rar包 
unrar x file1.rar 解壓rar包 
tar -cvf archive.tar file1 創建一個非壓縮的 tarball 
tar -cvf archive.tar file1 file2 dir1 創建一個包含了 'file1', 'file2' 以及 'dir1'的檔案文件 
tar -tf archive.tar 顯示一個包中的內容 
tar -xvf archive.tar 釋放一個包 
tar -xvf archive.tar -C /tmp 將壓縮包釋放到 /tmp目錄下 
tar -cvfj archive.tar.bz2 dir1 創建一個bzip2格式的壓縮包 
tar -xvfj archive.tar.bz2 解壓一個bzip2格式的壓縮包 
tar -cvfz archive.tar.gz dir1 創建一個gzip格式的壓縮包 
tar -xvfz archive.tar.gz 解壓一個gzip格式的壓縮包 
zip file1.zip file1 創建一個zip格式的壓縮包 
 cat proc/kmsg  查看內核文件
 busybox vi    編輯文件]
  例子:從當前目錄開始查找所有擴展名爲.in的文本文件,並找出包含”thermcontact”的行
  find . -name "*.mk" | xargs grep "TvSettings"
   START u0 {act=com.android.systemui.recents.SHOW_RECENTS flg=0x10804000 cmp=com.android.systemui/.recents.RecentsActivity 
  在後臺編譯
  nohup make -j8 &
  顯示系統進程
  ps -aux
  顯示系統佔用前五的進程
  ps auxw | head -1;ps auxw|sort -rn -k4|head -5
  更新編譯api
  make update-api
    top 
    編譯OTA包
    make otapackage
set ff=unix  將Windows轉化爲Linux

zip -s SIZE origin.zip --out new.zip zip分卷壓縮SIZE爲分卷的大小4m,4g,4t等
git archive --format=zip HEAD `git diff --name-only 52fa787 d45a14b` > a.zip 從git裏面提取兩個commit之間變更過的文件
echo 3 > /proc/sys/vm/drop_caches 內存回收命令
cat /proc/PID/oom_adj
CMD 命令
adb connect IP  連接Ip地址
adb kill-server 斷開連接
adb -r install APK地址 安裝APK
 -s 安裝到SD卡
 -f 安裝到data


 dumpsys命令:
dumpsys meminfo 顯示當前進程的內存使用及每個adj可回收內存的情況
dumpsys meminfo com.mstar.tv.service 顯示某包的內存使用情況
dumpsys cpuinfo 查看CPU的使用情況
dumpsys SurfaceFlinger 顯示surfaceflinger中的信息,包括每個layer的分辨率等
dumpsys activity 顯示四大組件的一些正在運行和歷史的全局變量信息,比如stack中的activity
dumpsys activity top 查看棧頂Activity
  
檢測經過了多少個網關
tracert ip
查看網絡中所有主機的Ip緩存
arp -a
arp -d 刪除緩存
查看本機端口
netstat
顯示域列表電腦列表,電腦共享資源列表
net view
顯示電腦帳號 
net user 
停止系統中的網絡服務
net stop
創建刪除,顯示共享資源的命令
net share
查看當前棧中的Activity
adb shell dumpsys activity
查看進程信息
adb shell ps
上傳文件到手機
adb push
從手機上下載文件到電腦
adb pull
查看系統中的設備
adb devices 
啓動應用
adb shell am start -n

getevent:查看 輸入設備是否有數據輸出
input keyevent +[鍵] :模擬IR發送按鍵
pm list packages -f :顯示所有已安裝的apk的包名及位置
am 命令:
am start -a android.intent.action.View -d Http://www.baidu.com 打開百度
am start com.jrm.localmm/.ui.main.FileBrowserActivity 啓動某個activity
am startservice -n com.android.music/com.android.music.MediaPlaybackService 啓動一個service, -n 表示組件
am broadcast -a com.smz.mybroadcast 發送一個廣播(這裏-a表示動作,就是在androidmanifest裏的定義的)

sqlite3 /tvdatabase/Database/factory.db 讀取某個db,然後通過.table顯示錶,在通過select* from Table 查看錶的內容
ime list 顯示所有輸入法,ime set com.android.inputmethod.pinyin/.PinyinIME 設置當前輸入法


7zr解壓
7zr x 文件名 -o生成文件名
壓縮
7zr a -t7z 壓縮文件的名字.7z 要壓縮的東西

//屏幕錄像,保存路徑爲/mnt/sdcard/1.mp4,需要注意的是屏幕錄像只支持android4.4以上的設備使用ctrl+c停止錄像
screenrecord /mnt/sdcard/1.mp4
//將sd卡路徑下的1.mp4導出到F盤(先退出交互模式-adb shell 使用exit)
adb pull /mnt/sdcard/1.mp4 f:\
//截圖
screencap /mnt/sdcard/1.png

/將system分區變成可讀可寫
mount -o remount,rw /system
mount -o rw,remount /system

修改權限爲最高
chmod 777 文件名
-rw-------   (600) 只有所有者纔有讀和寫的權限 
-rw-r--r--   (644) 只有所有者纔有讀和寫的權限,組羣和其他人只有讀的權限 
-rwx------   (700) 只有所有者纔有讀,寫,執行的權限 
-rwxr-xr-x   (755) 只有所有者纔有讀,寫,執行的權限,組羣和其他人只有讀和執行的權限 
-rwx--x--x   (711) 只有所有者纔有讀,寫,執行的權限,組羣和其他人只有執行的權限 
-rw-rw-rw-   (666) 每個人都有讀寫的權限 
-rwxrwxrwx   (777) 每個人都有讀寫和執行的權限
 

壓縮
tar -czvf ***.tar.gz
tar -cjvf ***.tar.bz2
解壓
tar -xzvf ***.tar.gz
tar -xjvf ***.tar.bz2

1、*.tar 用 tar –xvf 解壓
2、*.gz 用 gzip -d或者gunzip 解壓
3、*.tar.gz和*.tgz 用 tar –xzf 解壓
4、*.bz2 用 bzip2 -d或者用bunzip2 解壓
5、*.tar.bz2用tar –xjf 解壓
6、*.Z 用 uncompress 解壓
7、*.tar.Z 用tar –xZf 解壓
8、*.rar 用 unrar e解壓
9、*.zip 用 unzip 解壓

APK編譯不要odex
LOCAL_DEX_PREOPT := false

綠色輸出
echo -e "\033[32m deleted successfully \033[0m"
紅色輸出
echo -e "\033[31m  File not exist! \033[0m"

 

給第三方APK 進行系統簽名
java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk

java -Djava.library.path=. -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk
 
備註:簽名工具 out/host/linux-x86/framework/ signapk.jar
系統簽名文件:build/target/product/security/ platform.x509.pem platform.pk8

生成平臺platform.keystore文件:
1、把pkcs8格式的私鑰轉化成pkcs12格式:
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt
2、把x509.pem公鑰轉換成pkcs12格式:
openssl pkcs12 -export -in platform.x509.pem -inkey     shared.priv.pem -out shared.pk12 -name androiddebugkey 
密碼:android 

3、生成platform.keystore
keytool -importkeystore -deststorepass android -destkeypass android -destkeystore platform.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androiddebugkey

打開調試GPU過度繪製
setprop debug.hwui.overdraw show
關閉調試GPU過度繪製
setprop debug.hwui.overdraw false


shell腳本學習 怕忘
mk中引用腳本文件
$(info $(shell (device/rockchip/rk3399/del_build_prop.sh)))

# -f 參數判斷 $file 是否存在
if [ ! -f "$file" ]; then
 touch "$file"
fi

顯示行號
:set nu

下面列出怎麼對整個目錄中的文件做dos2unix操作:

 

$ find . -type f -exec dos2unix {} \;

其中具體命令的解釋如下:

find .
= find files in the current directory

-type f
= of type f

-exec dos2unix {} \;
= and execute dos2unix on each file found

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章