1.repo的一個問題:
repo init -u ssh://shchen@gerrit.bouffalolab.com:29418/bouffalo/manifest/bouffalo_sdk -b master -m allchips-internal.xml
/usr/bin/repo:681: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).now = datetime.datetime.utcnow()
Downloading Repo source from https://gerrit.googlesource.com/git-repo
fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
fatal: error [Errno 110] Connection timed out
fatal: double check your --repo-rev setting.
fatal: cloning the git-repo repository failed, will remove '.repo/repo'
可以看到是網絡連接失敗導致的,可是為什么repo init 民令回去google上進行下載東西呢?
原因:
我們 sudo apt install 下載的repo 其實就是一個引導器,真正的repo只有你init才會下載
說回到問題,這里錯誤是因為默認的鏈接是 google 的,配置一個國內鏡像就能解決。
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
2.refspec 與 ref
ref 展開來說是 git 的reference,默認情況下 refs/heads/master 可以簡稱為master
1)本地分支的Reference格式:refs/heads/<local_branch_name>
如refs/heads/master,在保證唯一的情況下可以簡寫為master
2)遠程追蹤分支的Reference格式:refs/remotes/<remote_repository>/<remote_branch_name>
如refs/remotes/origin/master,在保證唯一的情況下可以簡寫為origin/master
而refspec 是一個 git 的規則,該規則正是表示了本地和遠端的 refs 的關系的。當你 fetch push 相關操作的時候會有一個默認的規則,指定遠端的倉庫的哪個分支拉取到本地的哪個倉庫哪個分支。
+refs/heads/*:refs/remotes/origin/*#默認的命名空間 git 只認head還有remote,如果你放在一個非規定的命名空間里,則git branch -all 都不會顯示。比如:
git fetch origin/refs/heads/mater:refs/mynamespace/mybranch就會生成一個不再規則顯示內的分支
可以看到無法直接過去,但是可以 --detach強制分離指針然后跳轉,tig 可以看到當前分支情況:
3.Linux設置服務器:
在 /etc/systemd/system/ 目錄下添加一個 xxx.service文件
然后在文件中按照下面的類似框架去寫:
[Unit]
Description=My Custom Application Server # 服務的描述,便于識別
Documentation=https://github.com/yourusername/yourapp # 可選:項目文檔地址
After=network.target # 指定在網絡就緒后再啟動本服務[Service]
Type=simple # 這是最常用的類型,假設您的服務是前臺運行的
User=www-data # 強烈建議:以非 root 用戶運行服務,提高安全性。可以是 www-data, nobody 或您創建的用戶
Group=www-data # 用戶所屬的組
WorkingDirectory=/opt/myapp # 服務啟動時的工作目錄
ExecStart=/opt/myapp/server-linux-amd64 # 最重要的指令:啟動服務的完整命令
Restart=always # 服務意外退出時自動重啟
RestartSec=5 # 重啟前等待的秒數
Environment="PORT=8080" # 可選:設置環境變量,您的應用可以讀取它
# EnvironmentFile=/etc/default/myapp # 可選:也可以從一個文件加載多個環境變量# 安全相關設置(可選但推薦)
NoNewPrivileges=yes
PrivateTmp=yes[Install]
WantedBy=multi-user.target # 指定在系統進入“多用戶”模式時啟用此服務
完成后執行:sudo systemctl daemon-reload
然后就可以通過 systemctl 相關命令進行控制了。
4.SSH通信
SSH通信本質是 CS通信, 本地生成一對密鑰也就是公鑰和私鑰,然后把公鑰配置在服務器Server上,下面把公鑰叫做pub,私鑰叫做pri。
pub是一把鎖,只有pri能解開。你把pub放在服務器上,通信的時候,服務器就會把一段明文使用pub來進行加密發給你,驗證方法就是你使用pri把加密信息解開發回去,服務器驗證發現明文一致那么就判斷可以進行通信。
5.awk tr test 命令
awk:
awk options 'pattern {action}' file
其中最常見的使用 option 是-f 就是分割符號,action是打印行為,默認打印全行。
eg:
awk -F "=" '{print $2}' a.txt?? 就是以=分割打印每行的第二個。
tr:
用于替換,比如:
perf_content=$(tr '\r\n' ' ' < iperf_result.txt)? 就是替換iperf文件里所有的 /r/n 為空格
test:
-n 測試是否為空 -e 測試是否存在,會這兩個就夠用了基本。
6.Linux的日志
日志文件 | 描述 |
---|---|
/var/log/syslog | 系統核心和服務的通用日志(Debian/Ubuntu)。排查問題首先看這里。 |
/var/log/messages | 系統核心和服務的通用日志(Red Hat/CentOS/Fedora)。 |
/var/log/auth.log | 身份認證相關的日志(Debian/Ubuntu)。如 SSH 登錄成功/失敗、sudo 使用記錄。 |
/var/log/secure | 身份認證相關的日志(Red Hat/CentOS/Fedora),等同于 auth.log 。 |
/var/log/kern.log | 內核產生的日志。 |
/var/log/boot.log | 系統啟動過程中的日志。 |
另外有像 dmesg 和 jouralctl 這中查看方法。
一般來說,要查看一個應用的 log 采用 tail -f /var/log/app.log 的方法。