20210412のLinuxに関する記事は8件です。

shellscriptの関数

shellscriptでfunctionを勉強したので、まとめます。 参考記事 書式 func.sh function 関数名(){ 処理 } 関数名(){ 処理 } local 関数の中で変数を扱う。 local.sh HELLO=aaa hello(){ local HELLO=hello echo $HELLO #hello } echo $HELLO #aaa localを使うことで関数ないでのみ変数を保持する。 戻り値 戻り値が存在しないので変数に格納するなどする。 return.sh function(){ echo 'return value' } RTN=`function` echo $RTN FUNCNAME変数 使う機会はあるかわからないけどhelp functionに載っていたので一応メモ。 自身の関数の名前を格納している変数。 func_name.sh function_name(){ echo $FUNCNAME #function_name } readonly 変数や関数をreadonly(上書きできないよう)にする。 変数 ro.sh var=10 readonly var # $はつけない var=20 関数 func_ro.sh hello(){ echo 'first Hello' } readonly -f hello # fオプションを指定しないとそのまま上書きされる hello(){ echo 'second Hello' } これらを実行すると上書き不可能のエラーが出る。 間違いがございましたら、ご指摘ください。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macにgnuplotをインストール

環境 macOS Big Sur Homebrewのインストール 次のコマンドをターミナルで実行 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" URL: Homebrew Homebrewとは Wikipediaに次のようにある. Mac OS Xオペレーティングシステム上でソフトウェアの導入を単純化するパッケージ管理システムのひとつである 引用: Wikipedia gnuplotのインストール ターミナルで次のコマンドをそれそれぞれ実行.($はコピーしない.) $ brew upgrade $ brew install gnuplot gnuplotの起動 $ gnuplot で起動. gnuplotをインストールできた!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

debian 11 を LXC にぶっこむと apt とか遅いのに ubuntu 20.04 だと早いのでイラっとするからクイックフィックス

TL;DR(意味はよく分からない) echo "lxc.mount.entry = /sys/kernel/security sys/kernel/security none bind,optional 0 0" \ | sudo tee /var/lxc/[your_container_name]/config > /dev/null 今北産業 /var/lxc/[お前のコンテナ]/config に以下をぶっこむ lxc.mount.entry = /sys/kernel/security sys/kernel/security none bind,optional 0 0 入る入らないじゃねえ、入れるんだよ よくわからない解説 debian 11 を LXC なコンテナに入れて動かした場合、apt update がなんか遅いとか、netplan + udev + systemd-networkd でネットワーク周りの設定をさせようとしたらコケるとか、そういうトラブルが発生します。 ホスト = ubuntu 20.04 および debian 11(testingなう) ゲスト(というかコンテナ) = debian 11 の両者で同一現象の発生を確認済。不思議なことにコンテナに ubuntu 20.04 を選ぶと問題ないんですよねー【以下、Fワード展開】。 とりあえず apt 周りが遅いとか systemd-networkd がエラーをゲロるのは apparmor 周りが悪さしてるがためっぽいというか。 debian な config のテンプレと ubuntu な config のテンプレを diff ってソレくさいのは上記の設定だった、というだけです。debian 10 以降から apparmor 標準搭載ですしね。 よー知らんですけどコンテナ側で /sys/kernel/security 見えてなかったらなんかしらペナルティはあるでしょうし、systemd-networkd が udev をお触りした際にコケてもおかしくはないわな程度。 netplan 案外悪くないよ なんで netplan の話が出てるねん、という疑問があるかと思います。 なぜにコンテナ側で /etc/network/interfaces 使ってないかといえば ARP テーブル更新タイミング周りのトラブルによるパケロス回避のためです。 コンテナ側で balance-tlb な NIC 2枚 bonding してると言えばわかりますかね? ホスト側でボンディングなデバイス作って仮想マシンにアタッチして動かしたらパケロスのアレ。 ということでコンテナ側でボンディングしたったわけですが netplan 使うと bonding の設定がすんなりイケたわりに /etc/network/interfaces と ifenslave で設定ぶっこんだら bond0 たんが「NO-CARRIER」食らってだるいスなというやつです。こちらも理由よー調べてません。 NIC 1枚なら /etc/network/interfaces 経由での設定で問題はないでしょう。 あと netplan 使ってみたら「これ debian でも悪くないよ……!」と思ったので今後使っていこうかなと。 というクイックフィックス(間違ってたら知らん) 僕は LXC なりどこぞへパッチを投稿したり、あの手の世界に貢献したいわけではないので、シレっとマウント設定を投下して終わりにしています。 「俺は個人遣いのサーバを立てたいだけなんだよ!」というか、そこまで時間掛けるアレでもないかなぁと……。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxコマンド覚書

ディレクトリ削除 rmdirコマンドは、空のディレクトリを削除するコマンドである。 ディレクトリにファイルが存在する場合は以下を実行する。 rm -f [ディレクトリ名] 標準出力と標準エラー出力 [command] 2>&1 何も出力しない [command] > /dev/null 2>&1
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LPICレベル1に合格したから、今後も使えそうな知識をまとめてみた

概要 先日、だらだらと勉強をしていたLPICのレベル1に合格しました。 Linuxについて、体系的に学べてよかったのですが、正直今後つかわないような範囲も結構ありました。 今回は、LPICレベル1の範囲の中で今後も覚えておくとよさそうなことを独断と偏見で選び、まとめていきます。 LPICの勉強を始めた直後にこんな記事も書いているので、良ければ読んでみてください。 尚、筆者はWindowsPCしか持っていないため、Microsoft Storeでダウンロードしたubuntuのアプリを使って操作しています。 基本的なコマンド pwd Print Working Directoryの略。現在の作業ディレクトリのパスを表示することができる。 環境変数PWDにも現在の作業ディレクトリのパスが格納されているため、同様の結果を得ることができる。 $ pwd /home/testuser $ echo $PWD /home/testuser cd Change Directoryの略。引数にパスを渡すことで作業ディレクトリを変えることができる。 $ pwd /home/testuser $ cd /home $ pwd /home cdやcd ~で実行すると、現在ログイン中のユーザーのホームディレクトリに移動することができる。また、cd -で一つ前の作業ディレクトリに移動することができる。 $ pwd /home $ echo $USER ## USERはログイン中のユーザー名が格納される環境変数 testuser $ cd ## ログイン中のユーザーのホームディレクトリに移動 $ pwd /home/testuser $ cd - ## 一つ前の作業ディレクトリに移動 /home $ pwd /home ls List Directory Contentsの略。引数にパスを渡すことで、パスないに含まれるファイルやディレクトリを表示することができる。引数を省略すると作業ディレクトリに含まれるファイルやディレクトリを表示することができる root@PC933:/# pwd / root@PC933:/# ls bin boot dev etc home init lib lib32 lib64 libx32 media mnt opt proc root run sbin snap srv sys tmp usr var root@PC933:/# ls /var backups cache crash lib local lock log mail opt run snap spool tmp オプション 説明 -a 「.」から始まるファイルも表示する -d ディレクトリ自身の情報を表示する -l ファイルの詳細な情報を表示する メタキャラクタを使うことで、任意の文字列をパス名に含むもののみを表示することもできる。 root@PC933:~/test# ls -l total 0 -rw-r--r-- 1 root root 0 Apr 4 21:54 file.txt -rw-r--r-- 1 root root 0 Apr 4 21:55 file1.txt -rw-r--r-- 1 root root 0 Apr 4 21:55 log1.txt -rw-r--r-- 1 root root 0 Apr 4 21:55 log2.txt root@PC933:~/test# ls -l log* -rw-r--r-- 1 root root 0 Apr 4 21:55 log1.txt -rw-r--r-- 1 root root 0 Apr 4 21:55 log2.txt mv Move Filesの略。ファイル(ディレクトリ)の移動とファイル(ディレクトリ)のリネームを行うことができる。 root@PC933:~/test# ls -l total 0 -rw-r--r-- 1 root root 0 Apr 4 21:54 file.txt drwxr-xr-x 1 root root 4096 Apr 4 23:03 testdir root@PC933:~/test# mv file.txt testdir/ ## file.txtをtestdirディレクトリに移動 root@PC933:~/test# ls testdir root@PC933:~/test# ls -l testdir/ total 0 -rw-r--r-- 1 root root 0 Apr 4 21:54 file.txt -rw-r--r-- 1 root root 0 Apr 4 21:54 file.txt root@PC933:~/test# ls testdir root@PC933:~/test# mv testdir/file.txt testdir/file.rename.txt ## file.rename.txtにリネーム root@PC933:~/test# ls -l testdir/ total 0 -rw-r--r-- 1 root root 0 Apr 4 21:54 file.rename.txt rm Remove files or directoriesの略。fileやディレクトリの削除を行える。 オプション 説明 -f 確認なしに削除を行う -i 削除前に確認を行う -r ディレクトリ全体を削除する touch 本来はファイルのタイムスタンプを変更するコマンドだが、ファイルの作成のために使われることが多い。 root@PC933:~/test# ls -l total 0 root@PC933:~/test# touch test root@PC933:~/test# ls -l total 0 -rw-r--r-- 1 root root 0 Apr 4 23:11 test tee 標準入力から受け取った内容をファイルに保存しつつ、同様の内容を画面に表示するコマンド。 root@PC933:~/test# date | tee date.log Sun Apr 4 23:14:59 JST 2021 root@PC933:~/test# ls -l date.log -rw-r--r-- 1 root root 29 Apr 4 23:14 date.log root@PC933:~/test# cat date.log Sun Apr 4 23:14:59 JST 2021 ログ解析で使えそうなコマンド cat ファイルの内容を標準出力に出力するコマンド。 オプション 説明 -n 行番号を表示する -b 空行を除き、行番号を表示する less テキストを1画面ずつ表示するコマンド。 分量が大きく、catで表示すると見切れてしまうファイルの内容を確認するときなどに使われる。 表示中の操作 キー 説明 space 次ページへ進む b 前ページへ戻る /<検索文字列> 後に検索をかける ?<検索文字列> 前に検索をかける n 検索中に次候補に飛ぶ N 検索中に前候補に飛ぶ 同様の機能を持つコマンドにmoreコマンドがあり、Windows PowerShellでも利用できる。 tail ファイルの末尾を表示するコマンド。 -fオプションと合わせて使われることが多い。 オプション 説明 -n 行数 末尾から指定された行数のみ表示する(デフォルトでは10行表示 -f 末尾に追加された行を表示し続ける cut ファイルの各行から指定したフィールドを表示する。 オプション 説明 -d <区切り文字> フィールドの区切り文字をしているする(デフォルトではタブ) -f <取り出すフィールド> 何番目のフィールドを表示するか指定する root@PC933:~# cat test.log 20210405:INFO...... 20210406:INFO...... 20210407:INFO...... root@PC933:~# cut -d : -f 2 test.log ## 「:」を区切り文字に2番目のフィールドを表示 INFO...... INFO...... INFO...... sort 行単位でファイルの内容をソートするコマンド。 オプション 説明 -r 降順でソートする(デフォルトは昇順) -b 行頭の空白を無視 -f 大文字小文字を区別しない -n 数値として処理する(12を1ではなく12で処理する) -t 区切り文字指定 -k ソートに何番目のフィールドを使うかを指定する root@PC933:~# cat test.log 20210405:INFO...... :11 20210406:INFO...... :33 20210407:INFO...... :22 root@PC933:~# sort -b -r -n -t : -k 3 test.log 20210406:INFO...... :33 20210407:INFO...... :22 20210405:INFO...... :11 tr 標準入力から読み込んだ内容を変換、削除するコマンド。 root@PC933:~# cat tr.txt Hello World root@PC933:~# tr 'a-z' 'A-Z' <tr.txt ## 小文字を大文字に変換する HELLO WORLD オプション 説明 -d 引数に渡した文字列にマッチした文字列を削除する -s 連続する文字列を1文字として処理する trコマンドの引数には文字クラスを渡すことも可能。 クラス 説明 [:alpha:] 英字 [:lower:] 小文字 [:upper:] 大文字 [:digit:] 数字 [:alnum:] 英数字 [:space:] スペース root@PC933:~# cat tr.txt 20210405 Hello World root@PC933:~# tr [:lower:] [:upper:] < tr.txt 20210405 HELLO WORLD root@PC933:~# tr -d [:digit:] <tr.txt Hello World grep ファイル内の検索を行うコマンド。 引数で渡した文字列が含まれる行を表示する。 オプション 説明 -i 大文字小文字を区別せず検索する -n 行番号も表示する -v マッチしない行を表示する root@PC933:~# cat grep.txt 2021/04/05/ 18:56:1617616576 INFO ...... 2021/04/05/ 18:56:1617616578 ERROR...... 2021/04/05/ 18:56:1617616579 INFO ...... 2021/04/05/ 18:56:1617616579 info ...... 2021/04/05/ 18:56:1617616580 error...... root@PC933:~# grep -i -n error grep.txt 2:2021/04/05/ 18:56:1617616578 ERROR...... 5:2021/04/05/ 18:56:1617616580 error...... 環境変数 環境変数はexportコマンドを使って、設定することもできるが、bash起動時に自動で設定されるものがいくつかある(設定ファイルに書き込まれたものが設定される)。すべて覚えておく必要は全くないが、いくつか覚えておくと重宝するかも。 環境変数 説明 EDITOR デフォルトのエディタのパス HOME ホームディレクトリのパス HOSTNAME ホスト名 LANG ロケール PATH コマンドやプログラムを検索するパス USER 現在のユーザー PATHを通したいときは下記のようにexportコマンドを叩けば設定できる。 export PATH=$PATH:<通したいPATH> Linuxのファイルシステム Linuxのファイルシステムには何種類かあるが、FHS(Filesystem Hierarchy Standard)として標準化が進んでいる。FHSでは/(ルートディレクトリ)を最上位に位置づけ、その配下にいくつかのディレクトリを配置していく。これもすべてを覚えておく必要はないが、主要なものは頭に入れておくといいと思われる。 よくわからないけど、ある設定ファイルを/etcディレクトリに配置するのと、/etcディレクトリは設定ファイルを配置するディレクトリだから、そこに配置しようとするのでは大きく違う。(と思う。) ディレクトリ 説明 /bin 基本的なコマンドが配置される。 /sbin rootユーザーのみ実行できる、システム管理必要なコマンドが配置される(shutdown,rebootなど) /etc 設定ファイルなどが配置される。 /dev デバイスファイルが配置される。 /lib 共有ライブラリが配置される。 /opt パッケージ管理の仕組み(apt,yumなど)によってインストールされたプログラムが配置される。 /root rootユーザーのホームディレクトリ /home 一般ユーザーごとのホームディレクトリが配置される。 /var ログファイルなどが配置される。 /tmp 一時ファイルが配置される。 (一部割愛) ロケール ロケールとは地域情報のことで、それぞれに対応した環境変数を設定することで、メッセージの出力言語や書式を変化させることができる。例えば、コマンド操作によって出力されるメッセージを変えたい場合はLC_MESSAGESを変更することで出力言語を変えることができる。 カテゴリ 説明 LC_TIME 日付や時刻の書式 LC_MESSAGES メッセージ表示に用いる言語 LC_ALL 全てのカテゴリで使われる値 LANG 全てのカテゴリで使われるデフォルト値 LANGを設定すると、各カテゴリのデフォルト値を設定でき、ここのカテゴリを設定していた場合はその値で上書きできる。一方で、LC_ALLを設定すると全てのカテゴリにその値が適用される。 (例) LANG=ja_JP.utf8, LC_MESSAGESが空のとき、メッセージは日本語 LANG=ja_JP.utf8,LC_MESSAGES=en_US.utf8のとき、メッセージは英語 LC_ALL=jp_JP.utf8,LC_MESSAGES=en_US.utf8のとき、メッセージは日本語 クーロン cronとは定期的にジョブを実行するための仕組みであり、スケジュール管理を行うcrondとcrontabコマンドで構成される。ユーザー毎に作成されるジョブが書かれたファイルとシステム全体のジョブが書かれたファイルの2種類がある。 ファイル 編集方法 ユーザー毎 /var/spool/cront/<ユーザー名> cronttab -e コマンドで編集 システム /etc/cron.*/配下のファイル viコマンドで編集 crontabコマンド オプション 説明 -e crontabファイルを編集する -l crontabファイルの内容を表示する -r crontabファイルを削除する -i crontabファイルを削除する(削除前に確認を行う) -u <ユーザー名> 指定したユーザーのcrontabファイルを編集する(rootのみ実行可) crontabファイルの例 # m h dom mon dow command # 分 時 日 月 曜日 コマンド 1 * * * * echo 'per minute'       #毎分実行 0 0 * * * echo 'every day' #毎日0:00に実行 0 9,18 * * * echo 'every 9 and 18' #毎日9時と18時に実行 0 9-18 * * * echo 'every hourly 9 to 18' #9時-18時の間、毎時実行 0 */2 * * * echo 'every 2 hours' #2時間毎に実行 まとめ LPICは暗記が基本で、あまり役に立たないという話も聞いたりしますが、個人的には勉強しておいて良かったと思っています。何より、コマンド入力に慣れることが出来るのが1,2年目くらいの社員にとっては大きいかと思います。 少ししたらレベル2にも挑戦しようかな。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Intel GVT-g 使いたいけど iGPU の Aperture size が 256M しかないマンがつよつよになるためには grub の mod 版を使って UEFI のパラメータをいじるしかないのであった(過去形)。

GVT-g ってなんやねn(おっと誰か来たようだ) くだけた言い方: 淫輝の iGPU をホストとゲストでシェアしてピース。 まじめな言い方: Intel 限定、iGPU をホストとゲスト間で共有する機能。ゲスト側での性能はおおむね50%~60%くらい(使用するゲストの台数と負荷次第)。 参考: https://wiki.archlinux.jp/index.php/Intel_GVT-g 問題 使いたいよな? 貴殿ら? たぶん大体のマザーでは1~2コしか仮想の iGPU が作れないんじゃないかなと。 ざまぁメシうみゃああああああああああああああああああああ(^q^) ということで だいたい 256MB は Aperture size、つまりは「フレームバッファ用とかVRAM用として確保されるメモリ領域」が指定されてるようです(全部のマザーボード知ってるわけじゃないので「ようです」)。 これじゃ1コか2コしかデバイス作れないんでたっくさん仮想GPUできないトラブルがあります。 ありませんか? ありますよね? そう、あるんです。 ようこそトラブルシューター。UEFIを改変して Aperture size を増量し、楽しまなければなりません。市民の義務ですからやらない奴は略式の処刑(ZapZapZap)。 やる気ない? 許す(偉そうだな俺)。 そこまで iGPU 使いたいとか普通ないだろ Quadro 挿せよ説ががが。とりあえずノートPCとかで複数台ある程度 GPU 支援付きの仮想マシンが欲しいにゃーって時には Aperture Size の拡張が必要かも、くらいです。 ※ 注意: メーカーが隠してる値をイジることになるので自己責任。 やること UEFIの「Setup」項にある「Aperture Size」パラメータのアドレスというかオフセットというかとにかく位置、およびメモリ容量指定のために入力できる値、この2点を特定 mod 版 grub のビルド mod 版 grub を適当なUSBメモリに焼き焼き mod 版 grub の「setup_var2」コマンドでパラメータを書き換え Aperture Size の変更ができたかはなんかそれっぽいコマンドあったと思うんで探して(たぶん「lspci -vv -s PCIバス番号」) こういう場所なんで grub のパッチの当て方わからんマンとかはおらんやろーと思うんで適当に端折ります。 たぶん「どこに値があってどう調べりゃええねん」のほうが問題になるはずなので、そっちを重点的かつクッソ適当に書きます。 いるもの テメー様のマザーボード(以下M/Bって書いてたらマザーボードと嫁)のBIOSファイル ASUSとかギガバイ子ちゃん公式からDLできるアレ、マウスとかは知らん。あーはいはい、ゆーいーえふあいファイルですねー!(逆ギレ) UEFITool / IRFExtractor、パラメータ調査用 UEFITool、IRFExtractor(GUI版が便利): https://github.com/LongSoft/ UEFI に値入れるコマンド追加パッチ当ててビルドした grub パッチ元の grub は 2.04 以降を使うこと: https://www.gnu.org/software/grub/grub-download.html grub に UEFI の値を書き換える系コマンド追加するパッチ: https://github.com/datasone/grub-mod-setup_var ※ GCC10 以上ってる場合、最低でも以下のパッチを grub 2.04 のソースに当てる必要あり。 https://git.savannah.gnu.org/cgit/grub.git/commit/?id=68006d173291c6e972c4882d4fa40dc91a9c1d45 https://git.savannah.gnu.org/cgit/grub.git/commit/?id=bdf170d1018a500a7fea8d43677c5b4fc8812c74 mod 版 grub についてる「setup_var2」コマンドが欲しいだけなので zfs だとか mdraid がらみのコードがどうとかどうでもよくてブートすりゃどうでもええねん説。割り切りましょう。 パッチ当てるのだるいマンは ./configure で「-Werror=zero-length-bounds」でエラー出さないようにするオプションあったと思うのでその辺とかテメーでなんとかすれ。 サバンナ? なURLのほうの2パッチは GCC10 + grub 2.04 がそのエラーでビルドコケるよね対策のもの。 ユーとミーの環境はディファレンスだからアテンション(ルー語) 環境依存な話になるのでこちらの環境を晒します。 Core i5 8500T MSI B365 Pro VDH ディストリ: なんでもいいけど RedHat Linux 1.0 とかだと多分だめだと思う。ぶっちゃけ grub をビルドするだけなので窓OSでもいいくらい。 何が言いたいかといえば ボクは「MSI B365 Pro VDH」(BIOSは「7C39v13」)ベースでの話をします 別人様の M/B とは「Setup」の「Aperture Size」の「VarOffset」の値が違う可能性がめっちゃ高いです というか、同一 M/B でも BIOS のバージョンが違ったら値違うと思う…… orz 「思考停止戦隊コピペマン」したら逝くから! 絶対に値のコピペはやめるんだ! と強く言いたいので言ったった。 じゃあやる気ない感じで何を調べるか書きますね。 ざっくりいうと UEFIの「Setup」項にある「Aperture Size」のアドレスは? 「Aperture Size」項はどんな値を受け付けるの? というのを「UEFITool」「IRFExtractor」で調べましょうね、と。 ゆーいーえふあいツールのつかいかたとか、ぜんぶスクショよこしやがれください。 お前で調べろや!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! とか言ったら友愛されそうなので貼ります。下記画面は Windows ですが Linux 用もあるんでどっちでもいいです。 まず「UEFITool」を起動してBIOSだかUEFIだかのファイルをドラッグ&ドロップ。 メニューから「Action」→「Search」を選択。 検索は「GUID」、だいたい「899407D7-99FE-43D8-9A21-79EC328CAC21」で「Setup」項が当たると思うんですが違ったら何とかして「Setup」項がどこにあるかを調べやがれください。 下部ペインに検索結果出るんでダブルクリック → (多分)「Setup」ってところに飛ぶので「Setup」→「LZMAなんちゃら」をふつうに左クリック、「PE32 image section」を右クリックします。 右クリしたら「Extract Body」を選択。 多分「Section_PE32_image_Setup_Setup_body.efi」というファイルを保存できると思うんでどっか好きなフォルダに保存しといてください。 保存ができたら「IFRExtractor」(GUI版が楽かも)を起動して、先ほどの「なんちゃら.efi」を選択ののち「Extract」でなんかよーわからんテキストファイルを保存。 できたテキストファイルをエディタで開いて「Aperture Size」の文字列で検索。 エディタは何でもいいですがとりあえず宗教的に中立なメモ帳にしときます。 とりあえずこの辺の値が必要です。 ということで、UEFIのパラメータ書き換えに使うべき値はコレで判明します。 VarStoreInfo(VarOffset/VarName): の横にある「0x7F4」(BIOS次第で値変わるので注意) Aperture Size項の下にある「One Of Option:」の個々の値、Aperture Sizeを 2048MB 取りたい なら「0x0F」とか……。 が必要だってことです。 ここで突然の注意喚起 通常はメーカーさんがセットアップ画面から隠してる値ではありますから、作業する際はテメーの責任でやれということにはなります。 OKですね、自己責任。自己責任でヘタ打ったら文鎮なうです。 あたしゃどーなっても知りませんよ。 あとはそんなに難しくないです。 なんかスクショに「setup_var2」とか書いてるんですが ここのパッチを当てた grub に内蔵されてるコマンドっつかモジュールのことです。あとなんかURL貼ったら右の画像がヲタヲタしてるの気のせいですかね? ビルド自体は難しくないですんで、パッチ当てて ./configure; make で終わらせろ! って感じ。GCC10以降だとちょっと追加パッチがいるのだけご注意を(上記のGNUなサバンナのやつ)。 で、 ./configure; make からの make install したら逝くというかなんか不具合起きてもかなわんので この辺を参照してUSBメモリに入れとけというだけです。入ったらUSBからブートしやがれください。 最後は USBメモリからブートできたら grub> みたいな恒例のアレがでるので setup_var2 [VarStoreInfo(VarOffset/VarName)項の値] [使いたいAperture Sizeのオプションの値] をぶっ叩いて reboot で終わりです。 例) grub> setup_var2 0x7F4 0x0F grub> reboot はいじゃああとは誰か別人氏が GVT-g の使い方とか説明しといてくれよ! ドライバ入れるタイミングとかに癖があるので注意、先にOS上げてからデバイス追加的なやつ。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

shellscriptのselect文

shellscriptのselect文を勉強したので、まとめます。 書式 select_ex.sh select 変数名 in 値... do 処理... done *終了するときはbreakを入れるか、Ctrl+D(EOF送信)を使う。 実行されるとユーザから値に応じた数値の入力を受け付ける。 1)値1 2)値2 ... ここで入力された数値が変数に格納される。 例 select.sh select var in a b c d exit do if [ $var = 'exit' ]; then break fi echo $var done #入力受付 # 1) a # 2) b # 3) c # 4) d # 5) exit 実行すると入力を受け付けて、5(exit)ならばbreakそれ以外ならば変数の値を表示。 ただ、1~5以外、空白を入力されるとエラーが出る。 そのため、if文のzオプションを使う。 select.sh select var in a b c d exit do if [ -z $var ]; then echo 'this is unavailable' else if [ $var = 'exit' ]; then break fi echo $var fi done これで1~5以外の数値の場合、unavailableと表示する。 select文では1~5以外、つまり選択肢にない値が入力された場合は変数にはnullを格納している。 間違えがありましたらご指摘ください。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

EC-CUBE4のサーバー引っ越し

自分のための忘備録です。 ①ファイルを固める まずsshでサーバーに入って、EC-CUBEファイルを丸ごとtarで固めます。 varディレクトリ内のキャッシュファイル、ログファイル、セッションのファイルはエラーの原因になるので削除した方がいいそうです。 ssh ユーザー名@ドメイン tar zcvfp eccube.tar.gz --exclude public_html/eccube/var/cache/ --exclude public_html/eccube/var/log/ --exclude public_html/eccube/var/sessions/ public_html/eccube tarのオプション tar z gzの圧縮・解凍(cと組み合わせで圧縮、xと組み合わせで解凍) x アーカイブの展開 v 中身の表示 p アーカイブされたときのパーミッションを再現 -f アーカイブファイル名の指定(省略時は/dev/rmt0) -C チェンジディレクトリする ②.tar.gzファイルのダウンロード sshから出て、.tar.gzファイルをデスクトップにダウンロードします。 exit scp ユーザ名@ホスト名:/home/user/public_html/eccube.tar.gz ~/Desktop/ ③アップロード、展開 引っ越し先のサーバーにアップロードしてsshで入り、展開します。 scp ~/Desktop/eccube.tar.gz ユーザ名@引っ越し先のホスト名:/home/user/public_html/ ssh ユーザー名@ドメイン cd public_html tar zxvfp eccube.tar.gz 必要があれば展開後ファイルを移動する //一つ上に移動 mv * ../ //もし隠しファイルがあればそれも移動 mv .[^\.]* ../ ④設定ファイルを書き換える EC-CUBE4の場合、設定情報は .envファイルか .htaccessらしいです。 これは.envファイルの例 DATABASE_URL=mysql://username:password@host/database ・ ・ DATABASE_SERVER_VERSION=5.7.27``` ・ ・ MAILER_URL=sendmail://localhost ・ ・ ECCUBE_COOKIE_PATH=/ ⑤引っ越し先のサーバーにデータベースをコピーする。 phpMyAdminで元サーバーからエクスポート、引っ越し先サーバーでインポートする。 終わり。 ちょっと関係ないんですが、eccubeがおかしくなりました。 php7.3じゃないとおかしくなるみたいです。 php.cgiを使ってなんとかしました。 参考しました https://qiita.com/seiyaan/items/0708ebb6e24f2863adb2 https://techmemo.biz/ec-cube/eccube4-server-migration/
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む