探索linux踩過的坑

1, 注意組件化的成本,有些沒必要要的組件化能夠省略

2,組件間通訊

注意必定要把ajax獲取數據放在page層,給本身定一個規範,之後採用provide inject形式 最外層全部的 數據,方法,等一切須要命名的,所有以pro開頭,小駝峯命名, 在使用時,調用pro的方法,只是爲了獲取數據,全部的參數處理,以及後續操做,都通過本組件內指定,html

在考慮到子組件間通訊時,例如彈窗,或者獲取相機樹數據等,彈窗的顯隱由 父組件的狀態控制,不須要傳值,直接由父組件控制 (如pro.isShowDetail)vue

注入時以下linux

// A.vue
export default {
  provide: {
    pro: this
  },
  data() {
      return {
          a: 123,
          someData: [],
          uData: [],
      }
  },
  methods: {
      getData(parmas, fn) {
          Api.getData(parmas).then((res) => {
             fn(res);
          });
      },
      getFixedData() {
        Api.getFixedData().then((res) => {
            if (res.code === 0) {
                this.someData = res.data;
            }
        })  
      },
  },
  created() {
      this.getFixedData();
      this.getData({ pageNo: 1,pageSize: 20 }, () => {
          if (res.code === 0) {
            this.uData = res.data;
          }
      });
  },
}

// B.vue
export default {
  inject: ['pro'],
  mounted () {
    console.log(this.pro.a);  // 123
  }
}
複製代碼

注入時,過濾器是沒法注入的。須要過濾器的地方統一再modules下創建 [name].mixin.js 放在這裏面, 而後在須要的地方引入 如git

// deviceRegion.mixin.js
export default {
    filters: {
        changeMeta(a) {
            return `${a}`;
        }
    }
};

複製代碼

3,linux 服務,千萬別寫死循環,若是寫了,立刻停止,並重啓相關服務

此處感謝李鑫大佬ajax

ps -ef |grep sunjinxiang|grep -v grep|awk '{print $2}'|xargs kill -9
複製代碼

4,linux-gitlab-runner

job剛開始結果遇到以下報錯shell

Running with gitlab-runner 11.3.1 (0aa5179e)
  on my-shell 9ad02d52
Using Shell executor...
Running on template...
Fetching changes...
rm: cannot remove '.git/hooks/post-checkout': Permission denied
ERROR: Job failed: exit status 1
複製代碼

解決方法 (治標)api

找到這個地方
/home/gitlab-runner/builds/9ad02d52/0/sunjinxiang/test-CI-CD/.git/hooks
而後 cd /home/gitlab-runner/builds/9ad02d52/0
而後執行  rm -rf sunjinxiang
問題就這麼解決了。爲何我不知道
網上的解決方案也不知道緣由
治標不治本。又出現了。
複製代碼

解決方法 (治本)bash

ls -alh // 這個命令能夠查看全部者和組等等
sudo chown -R gitlab-runner:gitlab-runner ./gitlab-runner/   // 這個命令改變了這個文件夾的歸屬

複製代碼

5,linux shell 腳本 在寫變量時,等號跟變量不要分開, 若是分開,會把RETEXT當成命令執行

#!/usr/bin/env bash
RETEXT=`curl -X GET \
  'https://git-v.megvii-inc.com/api/v4/projects/943/pipelines?ref=master&scope=branches' \
  -H 'cache-control: no-cache' \
  -H 'postman-token: f640649b-b763-d506-afbe-84220b3375f9' \
  -H 'private-token: njVo6qWdNrW4kXcTVzz5'`

echo ----------
echo $RETEXT
echo ----------

複製代碼

6,linux shell 中"2>&1"含義

參考資料curl

爲什麼2>&1要寫在後面?
      command > file 2>&1 
      首先是command > file將標準輸出重定向到file中, 2>&1 是標準錯誤拷貝了標準輸出的行爲,也就是一樣被重定向到file中,最終結果就是標準輸出和錯誤都被重定向到file中。 
      
ls 2>1測試一下,不會報沒有2文件的錯誤,但會輸出一個空的文件1;
    ls xxx 2>1測試,沒有xxx這個文件的錯誤輸出到了1中;
    ls xxx 2>&1測試,不會生成1這個文件了,不過錯誤跑到標準輸出了;
    ls xxx >out.txt 2>&1, 實際上可換成 ls xxx 1>out.txt 2>&1;重定向符號>默認是1,錯誤和輸出都傳到out.txt了。
複製代碼
相關文章
相關標籤/搜索