■21/4/2 1:00AM
Linux cmd2
■プロキシを入れないとアクセスできない、が同セグメントは不要なためno proxy設定するLinuxの場合 export http_proxy=http://proxy:3128 export https_proxy=http://proxy:3128 export no_proxy=localhost,127.0.0.1,.in-xxx.comコマンドプロンプト set http_proxy=http://proxy:3128 set https_proxy=http://proxy:3128 set no_proxy=localhost,127.0.0.1,in-xxx.comPowerShell $env:http_proxy="http://proxy:3128" $env:https_proxy="http://proxy:3128" $env:no_proxy="localhost,127.0.0.1,in-xxx.com"
■ncコマンドでプロキシ確認 自分の環境から環境用のproxy に接続できるかどうか? apt install netcat-openbsd nc-vz. proxy 3128 でプロキシ確認 nc-vz 127.0.0.1 20-100 自分自身に対してTCP20~100番ポートをスキャンし成功するとsucceed!! cnc-likすると簡易的に好きなポートでサーバーを起動できる 特定のボートの疎通確認などに nc-lk 8000 -l オプション:サーバーモードで指定したポートで接続を待ち受ける 特権ポート (0-1023)までは、名前の通り特権が無いと、コマンドが通らない -kオプション:接続が終了してもプロセスを終了せず継続し新しい接続を待ち受ける レスポンスのデータを見たいなら、python モジュール等で python3-mhttp.server 8080
■LDAP mgrとLDAP LDAP managerは製品名で個人ユーザと所属グループが管理される。
製品概要 | 国産統合ID管理パッケージソフト「LDAP Manager」 OpenLdapはLinuxでよくつかわれているディレクトリサービス (ID管理)
OpenLDAP で理解するディレクトリサービス入門 | ほげほげテクノロジー
■sudoers について どのユーザやグループがどのsudo コマンドを利用することができるのかの定義の記載があり、ユーザとグループの設定で権限を制御 どのユーザがどのsudo コマンドを利用することができるのか $sudo -l idコマンドで自分の所属サブグループを確認 $id
元のページ
/// BANGBOO BLOG /// - Linux cmd
Comment (0)
■21/4/2 12:00AM
Linux cmd
■Linux terminal
tabで入力補完
↑↓で入力履歴呼び出し
^qはCtrl+qを押すという意味
半角/全角キー 日本語を切り替える(画面右上にもIMEがある、win+spaceの場合も)
ls -la ディレクトリ内を表示
ls -a 隠しファイルを含み表示
(GUI)ctl+h 隠しファイルを表示(メニューでもチェックで可)
pwd 現ワーク中のディレクトリを表示
cd ../ 上に上がる
clear 表示内容を消す
mv beforeName.text afterName.txt ファイル名変更
rm -R ディレクトリ名 削除、ファイルはrm a.txt
ls -l > hoge.txt >結果を上書き
ls -l >> hoge.txt >>結果を追記
printenv 環境変数表示 printenv xで特定表示
grep aaa -rl ./ カレントディレクトリ以下からファイル内にaaaが含まれるファイルを検索
grep -R $keyword *.py .pyファイルからkeywordを検索
sudo - 一般ユーザが特権操作する sudo省略sudo -i rootに切り替える
sudo -iu <username> 特権ユーザ切り替え
テキスト選択
Shift↑or↓ で行全体
home(+fn)で行頭、end(+fn)で行末移動
nano text.txt 作成あるいは開く、nano簡単かも、画面下コマンドでctrl+?すればいい
コマンドM-UはEsc+u
ctrl+k で1行削除
$()ドル記号と括弧で囲んだコマンドは実行結果を出力し展開echo "現在のディレクトリは、$(basename $(pwd))です"
パッククォートは囲った中身をコマンドとして実行しその結果を出力echo "今日は、`date +%m月%d日`です。"
変数と$()とバッククォートを使ってワンライナー【shell/bash】変数代入で``や$()の使う場面を忘れた時に見る記法まとめ (zenn.dev)
■viエディタ
sudo apt install vim
vi text.txt ファイル作成あるいは開く
viは2つ+αのモード ┣コマンドモード ┃┗コロンモード(exモード:祖先のラインエディタ) ┗入力モード
https://docs.oracle.com/cd/E19253-01/816-3946/editorvi-5/index.html
viのコロンモードコロンモードのコマンドは、このw、q、q!、x、$5... - Yahoo!知恵袋Escでコマンドへ抜ける
┗挿入 i (入力モード)
ファイル名を指定し保存 :w new_file_name.txt
強制保存のコマンド :w!
保存せず終了 :q 強制終了 :q!:10 10行目に移動:set number 行数を表示:num 現在のカーソル位置行数を表示
クリップボードをペースト iで挿入モードに入り Shift+Insertvi内でコピペ:yコマンドのコピー、pコマンドのペーストなので下記の様にする 2yw ならカーソルから2単語コピーされます 3yl ならカーソルから3文字コピーされます y$ ならカーソルから行末までコピーされます p ならカーソルの後ろにペーストされます$ カーソルを行末へG カーソルを最終行行頭へ- 前行の行頭へEnter 次行の行頭へw カーソルを1語進めるb カーソルを1語戻すCtrl-d 1/2画面下へ(down)Ctrl-u 1/2画面上へ(up)Ctrl-f 1画面下へ(foward)Ctrl-b 1画面上へ(back)/文字列(Enter要) 文字列検索(スラッシュ) ┣n 次の検索文字列へ ┗N 前の検索文字列へ 保存して終了 :wq 保存して強制終了 :wq!
コマンド集 viコマンド集 (ritsumei.ac.jp)カーソル移動 viでのカーソル移動方法を一通りまとめました (eng-entrance.com)検索 【初心者向け】viでの文字列の検索方法を一通り (eng-entrance.com)
■環境変数は下記の順で探す、なので必要なら下位のものを上にコピー
~/.bash_profile~/.bash_login~/.profile
source ~/.bash_profile 編集したbashrcをbash_profileに反映させる
bashrcはbash起動毎、bash_profileはログイン毎
■SSHの設定
Linuxコマンド【 ssh-keygen 】認証用の鍵を生成 - Linux入門 - Webkaru
$ ssh-keygen
パスフレーズは空でも設定上は問題ないが塩っ気が足らん気が秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が生成され、ホームディレクトリに作成される /home/yourID/.ssh/id_rsa /home/yourID/.ssh/id_rsa.pub.公開鍵をSSHサーバや外部サービスに登録する等して使う、秘密鍵は明かさないこと
SSHクライアントのproxy越えの設定方法 (mydns.jp)
プロキシbinのインスコ
$ sudo apt-get install connect-proxy
ホームにsshキーができているので$ vi ~/.ssh/configHost oketsu HostName 1.XXX.XXX.XXX User hoge IdentityFile ~/.ssh/id_rsa.pub LocalForward 5912 localhost:5902 ProxyCommand connect-proxy -H proxy.syanai.in:8022 %h %p
Host github.com HostName ssh.github.com
Port 443
IdentityFile ~/.ssh/id_rsa.pub ProxyCommand connect-proxy -H proxy.syanai.in:3128 %h %p User githoge$ chmod 600 .ssh/config下記のように実行すると、ログイン/GITできます。$ ssh oketsu
$ git clone githoge@github.com:kusogitry.git$ id 所属グループ等を表示
$ uname -n;id;date
■NW設定
/etc/resolve.conf
nameserver 88.88.88.88~/.profile とか .bashrc とか export http_proxy=http://proxy/3128/etc/apt/apt.conf
ip addr
■スクリプト実行
nohup python3 main.py & ユーザディレクトリにnohup.outログが実行完了時に一度に保存される(重いと思われる)nohup python3 main.py > /dev/null 2>&1 & ログなし nohupはバックグラウンド実行、ログアウトしても実行続けるjobs ジョブリストを出すfg ジョブ番号 フォアグラウンド実行に変えるbg ジョブ番号 バックグラウンド実行に変えるctrl c キャンセルctrl z 中断(再開できる)crontab -e 編集crontab -l 確認sudo service cron restart 再起動systemctl status cron 稼働の確認30 12 * * 0 python3 /home/app_hoge/main.py cronはバックグラウンド実行でnohup &を含めると実行されない、多分top プロセス/CPU/メモリ等の情報、こちらで動いていればpsのstatがsでも問題ない、多分ps auxps f -A プロセスをツリーで表示し便利kill -lkill -SIGCONT プロセス番号sudo less /var/log/cron.logsudo tail -f /var/log/cron.logsudo less /var/log/syslogsudo tail -f /var/log/syslog
■ディスク系
ext4 一般的なデスクトップやファイルサーバ向け、16TBまで、ファイルシステムチェックで遅いxfs 高負荷IOで大容量データ処理向け、ジャーナルなし、ファイルシステムチェックを短縮論理ディスク=パーティション
/dev/sda1, /dev/sda2, /dev/sdb, /dev/sdf等、数字はパーティション番号、数字がないとパーティション1つだけ
ディスク拡張
lsblkdf -Thdu -sk * | sort -nr
#xfsの場合pvdisplaypvresize /dev/nvmvgdisplaylvdisplaylvextend -l +100%FREE /dev/vg001/lv001xfs_growfs /opt
#ext4の場合apt autoclean キャッシュあるがインストールされていないdebファイル削除apt autoremove 必要なくなったパッケージ削除disk -l /dev/nvm パーティション情報growpart /dev/nvm 1 指定パーティションの容量拡張resize2fs /dev/nvm ファイルシステム拡張
容量調整
/var/cache はapt-get clean, yum cleanで消す程度で
■swapをrootからvarに移動freeswapon -aswapを無効化swapoff -v /swap.extendedswapをvarに移動mv /swap.extended /var/etc/fstabからswapのエントリを/varに書き換えcat /etc/fstabswapを有効化swapon -a確認free -h
■ライブラリアップデート
sudo apt updateapt list --upgradable | grep mysql
sudo apt install mysql-client=6.6.6-0ubuntu2.1~99.99.9sudo apt install mysql-client-core=6.6.6-0ubuntu2.1~99.99.9
…
dpkg-l | grep mysql
■WSL2https://qiita.com/zakoken/items/61141df6aeae9e3f8e36https://qiita.com/SAITO_Keita/items/148f794a5b358e5cb87bWSLインストール後はネットワークの設定が必要なら例) apt updateが出来ないWSL のバージョンはユーザの設定依存のため、version 2 (WSL2) が必要ならコマ ンドプロンプトで以下のコマンドを実行wsl --set-default-version 2アプリからWSL起動、CMDやPowershellならwslで起動 wsl --shutdown で停止 設定したユーザディレクトリにアクセスする(それぞれ別の場所)• WSLからは /mnt/c -> /mnt/c/Users/ore/Desktop/github• WINからは \\ws/$ -> \\wsl.localhost\Ubuntu-22.04\home\oreNW設定: WSL2のデフォルトでは起動するたびにWindowsホストのDNS設定を基にして自動的に/etc/resolv.conf を生成するが、サーチリストはWindows側から引き継がれないうえ、意図しないタイミングで勝手に再生成されてしまうので停止するnano/etc/wsl.conf下記追記[network]generate ResolvConf = falseDNS設定sudo unlink /etc/resolv.confsudo nano /etc/resolv.conf以下のように設定nameserver 172.27.117.yynameserver 172.27.117.xxsearch in-xxx.com dns search list.xxx.comproxy設定nano-/profile以下の設定を既存プロキシの下に追加export http_proxy="http://proxy:3128"export https_proxy="http://proxy:3128"apt の proxy 設定sudo /etc/apt/apt.conf以下のように設定Acquire: http: Proxy "http://proxy:3128",Acquire: https: Proxy "http://proxy:3128";WSL2を抜け、WindowsコマンドプロンプトでUbuntu を再起動ore@unco-017:/mnt/c/Users/ore$ exit
rootでキーを作成するとgithub上でユーザがrootとなるsudo adduser aaasudo usermod -aG sudo aaasudo nano /etc/wsl.conf 下記を追記しwsl再起動whoami[user]default-aaaecho $HOMEcd-mkdir.sshssh-keygen sudoだとgithubログイン時に名前がrootになってしまう/home/aaa/.ssh/id_rsacd- /home/aaanano/home/aaa/.ssh/configHost github.comHostName ssh.github.comPort 443ProxyCommand connect-proxy -H proxy:3128 %h %puser gitchmod 600 configeval "$(ssh-agent-s) sshエージェント起動ssh-add/home/aaa/.ssh/id_rsa sshエージェントに鍵を登録ssh-add確認初回は接続yesをして Warning: Permanently added (ssh.github.com): 443 (ED25519) to the list of known hosts.
wal-d Ubuntu-22.04 -u root パワシェルでrootユーザに切り替える場合wal.exe-shutdown パワシェルでシャットダウンや再起動の場合
パッケージの更新sudo apt update && sudo apt upgrade -yWSL環境設定cd /home/oreは/rootを表す(/homeでない)sudo apt install connect-proxy/rootにキーを生成ssh-keygenpassphrase xxXXcat /root/.ssh/id_rsanano/root/.ssh/configHost github.com HostName ssh.github.com Port 443 ProxyCommand connect-proxy -H proxy: 3128 %h %p user omecochmod 600 configシンボリックリンクを生成するcd /home/oreIn-s-/sshGithubサイトのユーザ設定でpub keyを登録し、承認するcd /mnt/c/Users/ore/Desktop/githubgit clone git@github.com:oreore/xxx.gitping github.com で通信確認ができる
curl https://sdk.cloud.google.com | bashexec -1 $SHELLgcloud auth application-default loginURLコピペgcloud config configurations listgcloud config configurations create kusogcloud config set account xxx@xxx.comgcloud config set project project-xgcloud config configurations activate kusogcloud auth loginpyenv install 3.13.0pipenv-python 3.13.0gcloud components updategcloud components install cbt(BigTable例)(パスフレーズを省略できる) eval $(ssh-agent); ssh-add-/.ssh/id_rsatfenvをマニュアルインストール https://github.com/tfutils/tfenvtfeny install 1.00.0tfenv listtfenv use 1.00.0export TF_CLI_ARGS_plan="-parallelism=50"export TF_CLI_ARGS_apply="$TF_CLI_ARGS_plan"環境変数を変更した場合は source ~/.bash_profile を反映
■SPFspfレコードはメールを送信する際、送信元サーバとDNS上のIPアドレスを比較自社から取引先に送信したメールにSPFレコードを設定していなければ、相手側のメールサーバで迷惑メールとされ届かない場合も
送信元のDNSに送信元IPをSPFレコードに登録する(ドメインをSMTPのIPに変える?ドメイン IN TXT v=spf1 ip4:172.16.0.1 -all(+が省略されているがIP許可、allを認証しないという意味)送信側SMTPサーバではSPFをチェックせず何でも送信
受信側MTAにて設定され(SMTPにはトランスファのMTA、デリバリのMDAspfを使えば先方がspfレコードを登録していなければメールが受け取れないpostfixやeximのSPFをonにする設定がある
spfレコードが設定されているかを確認nsookup -type=TXT 調べたいドメイン
■lsofはオープンファイルの略だがネットワークソケットの調査
lsofでファイルを開いているプログラムを特定する | 晴耕雨読 (tex2e.github.io)lsofコマンド入門 #Linux - Qiita
=============
■VS code
マルチカーソル:ctrl+shift+↓
[Alt]+クリックカーソルを追加[Ctrl]+[Alt]+[↑]/[↓]カーソルを上下に追加[Ctrl]+[U]カーソル操作を元に戻す[Shift]+[Alt]+[I]カーソルを行末に追加[Ctrl]+[L]行を選択[Ctrl]+[Shift]+[L]選択中の文字列と同じものをすべて選択[Ctrl]+[F2]カーソル位置の単語と同じものををすべて選択[Shift]+[Alt]+[→]選択範囲の拡大[Shift]+[Alt]+[←]選択範囲の縮小[Shift]+[Alt]+ドラッグ矩形選択[Ctrl]+[Alt]+[Shift]+[カーソル]矩形選択[Ctrl]+[Alt]+[Shift]+[PgUp]/[PgDn]矩形選択 ページ上下VSCodeのマルチカーソル練習帳 - Qiita
マルチカーソルを使わないVSCodeはただのVSCodeだ!〜解説編〜 - memo_md (hateblo.jp)
続き
/// BANGBOO BLOG /// - Linux cmd2
Comment (0)
■21/2/22 12:00AM
BigQuery part2
■マテリアライズドビュー実体データを保持しリフレッシュ更新で早いため集計等に向くベーステーブルは一つ、カウントができない、使用できない関数がある等の制約がある
またマテビューはビューを元に作成できずテーブルからである必要があるストレージコストは掛かるが、通常ビューで時間掛かる計算を頻繁にする場合は早く安くなる可能性があるBigQueryのMaterialized Viewを使う #データ分析 - Qiita
■BQ同時実行数オンデマンドでは使用可能なスロット数に基づき自動的に同時実行数が決定され超えるとスロットに 空きがでるまでキューに保管されるプロジェクトごとにクエリの最大同時実行数は動的に決まる同時実行数の最大値は指定できるが、大きくしても実行数が増えることはなく、あくまで自動決定 内の方が優先されるEditionsが割り当てられているプロジェクトでは最大同時実行数を明示的に設定できる他に、インタラクティブクエリ、バッチクエリ、クエリ順序や上限などBigQueryクエリキューの概要まとめ (zenn.dev)
■BQクリーンルームデータ準備側でパブリックし、使う側でサブスクする (BQ exploreでペインでAddする)スプシ保存できない、開覧数のレポートが見れる(使用者名は見えない) 実はパブ側でサブスクし公開すれば、閲覧とJobUserだけで使用できるようになるGAでなく、またオンデマンドしか無理、コピペやデータコネクタは可能で残念
■ロール割り当て者の出力
カスタムロールのProject_Admin、Project_Managerが誰に割り当てられているか
Asset inventoryをBQにダンプしたデータからクエリする
WITH projects AS ( SELECT resource.data AS rsc, ancestor_path FROM prj.cloud_asset_inventory.cloud_asset_inventory_org_resource_now WHERE asset_type = 'cloudresourcemanager.googleapis.com/Project' ), projects_info AS ( SELECT JSON_EXTRACT_SCALAR(rsc, '$.projectId') AS projectid, JSON_EXTRACT_SCALAR(rsc, '$.lifecycleState') AS lifecycleState, ancestor_path FROM projects ), projects_efficient AS ( SELECT * FROM projects_info WHERE NOT REGEXP_CONTAINS(ancestor_path, "folders/apps-script") ), projects_num_adm_mgr AS ( SELECT REPLACE(name, '//cloudresourcemanager.googleapis.com/projects/', '') AS project_num, REPLACE(b.role, 'organizations/1234567/roles/', '') AS role_value, STRING_AGG(REPLACE(m, 'user:', ''), ', ') AS member_value FROM prj.cloud_asset_inventory.cloud_asset_inventory_org_iam_policy_now, UNNEST(iam_policy.bindings) AS b, UNNEST(b.members) AS m WHERE asset_type = 'cloudresourcemanager.googleapis.com/Project' AND (role LIKE '%Project_Admin%' OR role LIKE '%Project_Manager%') GROUP BY project_num, role_value ), projects_adm_mgr AS ( SELECT JSON_EXTRACT_SCALAR(resource.data, '$.projectId') AS project, projects_num_adm_mgr.role_value, projects_num_adm_mgr.member_value FROM projects_num_adm_mgr LEFT JOIN prj.cloud_asset_inventory.cloud_asset_inventory_org_resource_now AS res ON projects_num_adm_mgr.project_num = REPLACE(res.name, '//cloudresourcemanager.googleapis.com/projects/', '') )SELECT projects_efficient.projectid, projects_efficient.lifecycleState, CONCAT(projects_efficient.projectid, ', ', projects_adm_mgr.role_value) AS role_value, projects_adm_mgr.member_valueFROM projects_efficientLEFT OUTER JOIN projects_adm_mgrON projects_efficient.projectid = projects_adm_mgr.projectORDER BY lifecycleState DESC, projectid;
■IAM(Identity and Access Management)/// BANGBOO BLOG /// - GCP
前回
/// BANGBOO BLOG /// - BigQuery
Comment (0)
Navi: < 7 | 8 | 9 | 10 >
-Home
-Column [128]
-Europe [9]
-Gadget [77]
-Web [133]
-Bike [4]
@/// BANGBOO BLOG ///