brew install httpie
http GET https://www.google.co.jp/
http --follow --verbose GET https://www.google.co.jp/
dig mx yahoo.co.jp
実は オプションは最後でも同じです。(こちらの方がヒストリから違うレコードを見たいときに便利です)
dig yahoo.co.jp mx
dig txt yahoo.co.jp
例 1. IPアドレス 「123.123.123.123」を登録
v=spf1 +ip4:123.123.123.123 ~all
例 2. IPアドレス 「123.123.123.123」とサーバ「outra.server.tld」を登録
"v=spf1 ip4:123.123.123.123 include:outra.server.tld ~all"
dig a yahoo.co.jp
または a を省略して
dig yahoo.co.jp
でも同じです。
dig ns yahoo.co.jp
dig any yahoo.co.jp
dig -x 182.22.59.229
dig a yahoo.co.jp @ns02.yahoo.co.jp
dig yahoo.co.jp +trace
cat /etc/resolv.conf
cat .digrc
+noedns
macの brew コマンドでインストールします
brew install libavif
linuxでdnfを使う場合は
dnf install libavif
その後にこちらからCLIコマンドをダウンロードして好きな場所に配置しましょう https://github.com/kornelski/cavif-rs?tab=readme-ov-file
ターミナルから以下のコマンドで実行します。
avifenc 元ファイル名 -o 変換先ファイル名
例
avifenc myfile.png -o myfile.avif
・Automator 新規ファイルを作成します。
シェルスクリプトは以下をコピーして貼り付けます
for file in "$@"
do
if [[ "$file" == *.png ]]; then
/opt/homebrew/bin/avifenc "$file" -o "${file%.png}.avif"
elif [[ "$file" == *.jpg ]]; then
/opt/homebrew/bin/avifenc "$file" -o "${file%.jpg}.avif"
fi
done
kill プロセス番号
kill -SIGHUP プロセス番号
kill -SIGINT プロセス番号
kill -SIGQUIT プロセス番号
kill -SIGKILL プロセス番号
kill -SIGKILL <プロセスID>
名前 | 番号 | 動作(※) | 意味 |
---|---|---|---|
SIGHUP | 1 | Term | 制御端末の切断(ハングアップ)、仮想端末の終了 |
SIGINT | 2 | Term | キーボードからの割り込みシグナル(通常は[CTRL]+[C]) |
SIGQUIT | 3 | Core | キーボードによる中止シグナル(通常は[CTRL]+[\]) |
SIGTERM | 15 | Term | 終了シグナル(「kill」コマンドのデフォルトシグナル) |
SIGFPE | 8 | Core | 不正な浮動小数点演算(ゼロ除算やオーバーフローなど)の発生 |
SIGKILL | 9 | Term | 強制終了シグナル(KILLシグナル) |
SIGSEGV | 11 | Core | 不正なメモリ参照の発生 |
SIGPIPE | 13 | Term | 読み手のいないパイプへの書き込み(通常はこのシグナルを受け取ると即時終了する) |
SIGALRM | 14 | Term | タイマー(Alarm)による終了 |
SIGCHLD | 17 | Ignore | 子プロセスの状態(終了、停止または再開)が変わった |
SIGCONT | 18 | Cont | 一時停止しているジョブへの再開シグナル |
SIGSTOP | 19 | Stop | 一時停止シグナル |
SIGTSTP | 20 | Stop | 端末からの一時停止シグナル(通常は[CTRL]+[Z]) |
SIGTTIN | 21 | Stop | バックグラウンドジョブ/プロセスのキーボード入力待ち |
SIGTTOU | 22 | Stop | バックグラウンドジョブ/プロセスの端末出力待ち |
SIGXCPU | 24 | Core | CPU時間制限を越えた |
SIGXFSZ | 25 | Core | ファイルサイズ制限を越えた |
SIGWINCH | 28 | Ignore | ウィンドウのサイズが変更された |
lsof -i :3000
netstat -tulpn | grep :3000
ss -ltnp | grep :3000
https://www.charlesproxy.com/download/beta/
30日間お試しができるシェアウェアです。
charles を起動しておきます。
iPhoneは接続しているWifi設定で i マークをタップします。
プロキシを構成 → 「手動」にします
==========================
サーバ:192.168.1.xx
ポート:8888
==========================
プロキシを構成を手動ににしてサーバに自分のPCのIPアドレスを登録してポート8888を設定します。
ポップアップ「Allow」、「Deny」の選択画面がでるので「Allow」を選択します。
scp -r -P <ポート番号> <ソースファイル/ディレクトリ> <ユーザー名>@<サーバーホスト>:<転送先パス>
-r
オプションでディレクトリを再帰的にコピー-P
オプションでSSHポート番号を指定(デフォルトは22)SCPはSSHの上で動作するファイル転送プロトコルですが、ファイル転送の再開機能は組み込まれていません。SSH接続が切断されると、SCPでの転送も中断されてしまいます。
再開できないということは、大きなファイルを転送している最中に接続が切れると、これまでに転送された部分のデータは無駄になり、時間とリソースの無駄が発生してしまうことを意味します。
一方、rsyncなどの転送ツールは、転送が中断した場合でも、再開時に既に転送済みの部分を補完するだけで済むので、効率的です。
このようにSCPは転送の信頼性は高いものの、転送が中断した場合の対処が非効率的という側面があります。そのため、大量のデータ転送には向いておらず、小規模な転送にはよく使われますが、大規模な転送にはrsyncなどの再開機能付きのツールを使うことが推奨されています。
rsync -avz -e 'ssh -p <ポート番号>' <ソースファイル/ディレクトリ> <ユーザー名>@<サーバーホスト>:<転送先パス>
-a
オプションでアーカイブモード(再帰的にディレクトリ/SymlinkをコピーしてPermissionを保持)-v
オプションで進捗状況を表示-z
オプションで転送データを圧縮-e
オプションでリモートシェルを指定(ここではSSHを使う)--partial
オプションを付けると中断後再開が可能拡張子 .ts と .tsx ファイルを 文字列 foobar で検索 (カレントディレクトリ ./ 以下)
grep -rnw './' -e 'foobar' --include=\*.{tsx,ts}
再帰的に文字列【onClick】でカレントディレクトリ以下の全ての【拡張子 .tsxファイル】を検索するには
find . -name "*.tsx" -print0 | xargs -0 grep 'onClick'
とやります。
拡張子 による絞り込みが不要の場合は、以下のようにしてもokです
grep -r 'onClick' .
ab 以外のベンチマークを使いたい場合、他にも選択があります。
Siege は ab コマンドよりも進んだ機能を提供し、ウェブページ内で参照される静的コンテンツ(CSS、JavaScript、画像など)を含むリクエストの処理が可能です。
siegeのインストール
mac
brew install siege
unix
apt-get install siege
siegeの実行例
siege --benchmark --concurrent=5 --time=10s http://127.0.0.1:3000/
wrk のインストール
git clone https://github.com/wg/wrk.git
cd wrk
make -j4
sudo mv wrk /mv wrk /usr/local/bin/
ベンチマークをとる
wrk -t8 -c10 -d10s --latency http://127.0.0.1:3000/
戻ってくる値のこの辺りを見て判断します
4830 requests in 10.07s, 108.95MB read
Requests/sec: 479.58
cd
mkdir .homebrew
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C .homebrew
vi .bash_profile
#すでにこのような記述がある場合はコメントアウトか削除する
#OFF eval "$(/opt/homebrew/bin/brew shellenv)"
# homebrewパスを追加
export PATH=$HOME/.homebrew/bin:$PATH
export HOMEBREW_CACHE=$HOME/.homebrew/caches
brew --version
brew update
history -s string
print -S string
brew install parallel
コマンド
echo hoge build | parallel --no-notice echo {}/{}
結果
hoge/hoge
コマンド
parallel --no-notice echo {}/{} ::: hoge
結果
hoge/hoge
fzf と bat を インストールします
brew install fzf
brew install bat
sudo dnf install fzf
以下のURLからbashまたはzsh用のファイルをダウンロードします。
https://github.com/junegunn/fzf/tree/master/shell
ホームフォルダの /fzf/ 以下に保存します
.bash_profile に 以下のように記述します ( bash の場合 )
# FZF
source ~/fzf/completion.bash
source ~/fzf/key-bindings.bash
Control + R
を押すと コマンドの履歴が表示され、fuzzyサーチして実行することができます。
# FZF (ssh)
function fssh {
t=$(cat ~/.ssh/config | grep 'Host ' | cut -f2 -d' ' | fzf --reverse --preview "cat ~/.ssh/config | sed -ne '/^Host {}$/,/^\s*$/p'")
if [ -n "$t" ]; then
echo "ssh $t"
ssh "$t"
fi
}
fssh
接続先一覧からエンター押すと接続できるようになります。
まず jq をインストールします
brew install jq
function fy() {
if [ ! -f "package.json" ]; then
echo "Error: package.json not found"
return 1
fi
if [ -f "yarn.lock" ]; then
local pm=yarn
else
local pm=yarn
fi
local script=$(cat package.json | jq -r '.scripts | to_entries | .[] | .key + " -> " + .value' | fzf --reverse)
if [ -n "$script" ]; then
SCRIPT=(${script/ -> / })
echo ${pm} run ${SCRIPT[0]}
history -s ${pm} run ${SCRIPT[0]}
${pm} run ${SCRIPT[0]}
fi
}
fy
function fn() {
if [ ! -f "package.json" ]; then
echo "Error: package.json not found"
return 1
fi
if [ -f "yarn.lock" ]; then
local pm=npm
else
local pm=npm
fi
local script=$(cat package.json | jq -r '.scripts | to_entries | .[] | .key + " -> " + .value' | fzf --reverse)
if [ -n "$script" ]; then
SCRIPT=(${script/ -> / })
echo ${pm} run ${SCRIPT[0]}
history -s ${pm} run ${SCRIPT[0]}
${pm} run ${SCRIPT[0]}
fi
}
fn
function fd(){
local SH="bash"
type docker >/dev/null 2>&1 || {
echo "docker not found" >&2
exit 1
}
type fzf >/dev/null 2>&1 || {
echo "fzf not found" >&2
exit 1
}
local HASH=$(docker ps | fzf --reverse --header-lines=1 --select-1 --query="${1:-}" | awk '{ print $1 }')
history -s docker exec -it "${HASH}" "${SH}"
docker exec -it "${HASH}" "${SH}"
}
fd
brew install jq
( bash用です )
# package.json実行 (brew install jq)
function fp() {
if [ ! -f "package.json" ]; then
echo "Error: package.json not found"
return 1
fi
if [ -f "yarn.lock" ]; then
local pm=yarn
else
local pm=npm
fi
local script=$(cat package.json | jq -r '.scripts | to_entries | .[] | .key + " -> " + .value' | fzf)
if [ -n "$script" ]; then
SCRIPT=(${script/ -> / })
echo ${pm} run ${SCRIPT[0]}
history -s ${pm} run ${SCRIPT[0]}
npm run ${SCRIPT[0]}
fi
}
以下のURLから preview.sh をダウンロードする https://raw.githubusercontent.com/junegunn/fzf.vim/master/bin/preview.sh
~/fzf/ に保存し、 実行権限を付与しておきます
chmod 0755 preview.sh
.bash_profile に以下を追加する
# FZF (fd)
function fd {
file=$(find * | fzf --preview "preview.sh {} 2> /dev/null || ls {}")
echo $file
echo $file | pbcopy
}
# fmake
function fmake() {
if [ ! -f "Makefile" ]; then
echo "Error: Makefile not found"
return 1
fi
local script=$(make help | fzf --reverse --ansi)
if [ -n "$script" ]; then
SCRIPT=(${script/ {3,}/ })
echo make ${SCRIPT[0]}
history -s make ${SCRIPT[0]}
make ${SCRIPT[0]}
fi
}
仕事が遅い人は絶対に知らないワンライナー10選 - Qiita
https://blog.tsub.me/post/move-from-peco-to-fzf/
https://journal.lampetty.net/entry/terminal-env-from-peco-to-fzf
https://zenn.dev/fruitriin/scraps/5aa42e37bc57cb
ipconfig getifaddr en0
curl ifconfig.io -4
エイリアス localip をつけておくといいでしょう。
alias localip='ipconfig getifaddr en0'
alias globalip='curl ifconfig.io -4'
curl -s inet-ip.info
XXX.XXX.XXX.XXX
curl -s http://httpbin.org/ip
{
"origin": "XXX.XXX.XXX.XXX" # グローバルIPアドレス
}
curl -s globalip.me
xxx.xxx.xxx.xxx
Alpine Linux で curl がない場合は事前に
apk add curl
してインストールしておきましょう
unixシェルで一番よく使うコマンドの代表格といえば
ls -la
だと思います。 これを短縮して
l [Enter]
で実行できると便利なので以下のようにbash のエイリアスを設定します。
ホームディレクトリ内の .bash_profile または .bashrc に記述
# alias
alias ll='ls -la'
alias l='ls -laF'
alias c='cd'
alias h='history'
alias gr='grep'
alias hg='history | grep '
alias g='git'
alias d='docker'
alias dc='docker-compose'
alias tf='terraform'
alias r='rsub '
alias v='vim '
alias gp='git plog'
alias gits='git status -uall'
alias pa='php artisan'
alias localip='ipconfig getifaddr en0'
alias globalip='curl ifconfig.io -4'
またシェルのプロンプトに 「現在のディレクトリパス名」「ユーザー名」を表示させると便利なので以下のように設定します。
ホームディレクトリ内の .bash_profile または .bashrc に記述
# prompt
PS1='[$USER@\H $PWD]$ '
PATH="$PATH":/usr/local/hogehoge ←追加
とするとパス「/usr/local/hogehoge」を追加できます。
export HISTSIZE=50000
export HISTFILESIZE=50000
export HISTCONTROL=ignoredups
export HISTCONTROL=ignorespace
export HISTCONTROL=erasedups
export HISTCONTROL=ignoredups:ignorespace:erasedups
whereis bash
で bash のパスを調べて、( 例: /usr/local/bin/bash )
chsh -s /usr/local/bin/bash
とします。
brew install git
git --version
wget が無い場合は 事前に brew install wget
しておきましょう。
git-completion.bashのインストール
wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -O ~/.git-completion.bash
chmod a+x ~/.git-completion.bash
echo "source ~/.git-completion.bash" >> ~/.bash_profile
source ~/.bash_profile
git-prompt.sh のインストール
wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh -O ~/.git-prompt.sh
chmod a+x ~/.git-prompt.sh
echo "source ~/.git-prompt.sh" >> ~/.bash_profile
source ~/.bash_profile
.bash_profile に設定を記述
source ~/.git-completion.bash
source ~/.git-prompt.sh
# git-prompt設定
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWUPSTREAM=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWSTASHSTATE=1
# prompt
PS1='[$USER@\H $PWD]\033[0;32m\]$(__git_ps1)\[\033[0m\] $ '
gitの表示は以下のようになります。
設定値 | 意味 |
---|---|
GIT_PS1_SHOWDIRTYSTATE=true | addされていない変更の存在を「*」で示す commitされていない変更の存在を「+」で示す |
GIT_PS1_SHOWUNTRACKEDFILES=true | addされていない新規ファイルの存在を「%」で示す |
GIT_PS1_SHOWSTASHSTATE=true | stashがある場合は「$」で示す |
GIT_PS1_SHOWUPSTREAM=auto | upstreamと同期している場合は「=」で示す upstreamより進んでいる場合は「>」で示す upstreamより遅れている場合は「<」で示す |
引用 : https://qiita.com/ryoichiro009/items/7957df2b48a9ea6803e0
# alias
alias ll='ls -la'
alias l='ls -laF'
alias c='cd'
alias h='history'
alias gr='grep'
alias hg='history | grep '
alias g='git'
alias d='docker'
alias dc='docker-compose'
alias tf='terraform'
alias r='rsub '
alias v='vim '
alias gp='git plog'
alias gits='git status -uall'
alias pa='php artisan'
alias localip='ipconfig getifaddr en0'
alias globalip='curl ifconfig.io -4'
# prompt
# PS1='[$USER@\H $PWD]$ '
PS1='[$USER@\H $PWD]\033[0;32m\]$(__git_ps1)\[\033[0m\] $ '
# history
export HISTSIZE=50000
export HISTFILESIZE=50000
export HISTCONTROL=ignoredups:ignorespace:erasedups
### 以下は必要なら追加
# git日本語文字化け対策
export GIT_PAGER="LESSCHARSET=utf-8 less"
# vanila js で jest を実行する時に import / export を使用可能にする
# package.json に 「 "type": "module"」 も追加すること
export NODE_OPTIONS=--experimental-vm-modules
# show git branch
source ~/.bash_git_prompt
linuxの場合は git-completion.bash, git-prompt.sh が 標準でインストールされていることが多いので、まずは検索しましょう
find / -name git-completion.bash
find / -name git-prompt.sh
.bash_profile に設定します。
/usr/share/doc/git/contrib/completion/git-completion.bash
/usr/share/git-core/contrib/completion/git-prompt.sh
~/.bash_git_prompt を以下の内容で保存
# .bash_prompt
function git_branch() {
s=$(git branch --no-color 2>/dev/null | sed -ne "s/^\* \(.*\)$/\1/p")
if [ ! "$s" = "" ]; then
echo "($s)"
fi
}
export PS1='[$USER@\H $PWD]\033[0;32m\]$(git_branch)\[\033[0m\] $ '
.bash_profileの一番最後に次の1行を追加する
# show git branch
source ~/.bash_git_prompt
これで git リポジトリ内にいるときは現在のブランチ名を表示させます。 git リポジトリ内にいない時は何を表示しません。
hoge=`cat file.out`
echo "$hoge"
vi (実はvimが動いていることが多い)のカラーリングをやめさせるには次のコマンドを入力します。
[esc]を押して
:syntax off
[esc]を押して
:syntax on
vim ~/.vimrc
次の内容で保存します
:syntax off
次のコマンドで調べておきましょう
which vi
yum install -y mailx
mail
z [Enter] 次のページへ移動
z- [Enter] 前のページへ移動
数字 [Enter] 指定した番号のメッセージを表示
h [Enter] 一覧画面を表示
exit [Enter] mailコマンド画面を終了する
ソフトデリートを表現するのに
is_active= 0 : ソフトデリートされた状態
is_active= 1 : 通常のユーザー
を使用しているとします。
この時ログイン時にソフトデリートされているかどうかをログイン条件に入れながらログインさせます。
app/Http/Controllers/Auth/LoginController.php
/**
* ユーザーが認証された後の処理
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function authenticated(\Illuminate\Http\Request $request, $user)
{
if( $user->is_active !== 1 )
{
auth()->logout();
return back()->withErrors([
'email' => 'ユーザーがアクティブになっていません',
]);
}
}
sudo yum install - y xpdf
pdftoppm -h
pdftoppm -png test.pdf thumbnail
結果
thumbnail-1.png
thumbnail-2.png
thumbnail-3.png
thumbnail-4.png
thumbnail-5.png
thumbnail-6.png
pdftoppm -jpeg test.pdf thumbnail
結果
thumbnail-1.jpg
thumbnail-2.jpg
thumbnail-3.jpg
thumbnail-4.jpg
thumbnail-5.jpg
thumbnail-6.jpg
yum install -y ncdu
brew install p7zip
.gitディレクトリ を除いて圧縮
7z a my_folder.zip ~/my_folder -x!.git
ls -laR | grep "\->"
find * -type l
https://github.com/BurntSushi/ripgrep
sudo yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo
sudo yum install -y ripgrep
brew install ripgrep
rg <PATTERN> <DIR_NAME>
Macの場合
brew install nkf
nkf -w --overwrite *.csv
7zip を使用します。
こちらからインストールします。
https://sevenzip.osdn.jp/download.html
"C:\Program Files\7-Zip\7z.exe" a C:\Users\hoge\Desktop\my_app.zip my_app -x!.git
パスにスペースが含まれているので "C:\Program Files\7-Zip\7z.exe" と ダブルクォーテーションで囲みます。
その後ろは
a 圧縮ファイル名 フォルダ名 です。
"C:\Program Files\7-Zip\7z.exe" a C:\Users\hoge\Desktop\my_app.zip my_app -x!.git
次のように指定します
a 圧縮ファイル名 フォルダ名 -x!除外フォルダ名
この例では hogeユーザーのデスクトップに my_app.zip を作成します。
du -sh /var/cache/yum/
221M /var/cache/yum/
221Mあります。
yum clean all
再度yumのキャッシュを確認する
du -sh /var/cache/yum/
28M /var/cache/yum/
28Mに減りました。
現在のページキャッシュを確認する
free -m
total used free shared buff/cache available
Mem: 487 197 24 20 265 256
Swap: 2047 699 1348
Linux の ページキャッシュを削除する
echo 1 > /proc/sys/vm/drop_caches
hostname
sudo vim /etc/hostname
新しいホスト名を入れて「 esc → :wq」から保存し、マシンを再起動します。
my_app ディレクトリを圧縮して my_app.zip ファイルを作成します。
zip -r my_app.zip my_app
my_app ディレクトリを圧縮して my_app.zip ファイルを作成します。
( .gitディレクトリを無視 )
zip -r my_app.zip my_app --exclude=*/.git/*
--exclude オプションは ディレクトリの前でも良いみたいです。
zip -r my_app.zip --exclude=*/.git/* my_app
my_app ディレクトリを圧縮して my_app.zip ファイルを作成します。
( .gitディレクトリを無視 )
( ___bakディレクトリを無視 )
zip -r my_app.zip my_app --exclude=*/.git/* --exclude=*/___bak/*
my_app ディレクトリを圧縮して my_app.zip ファイルを作成します。
( .gitディレクトリを無視 )
( bakディレクトリを無視 )
( 始まりのファイルとディレクトリを無視 )
zip -r my_app.zip my_app --exclude=*/.git/* --exclude=*/___bak/* --exclude=*/___*
bash の 日本語が文字化けする時の対応
まずはこちらのコマンドで文字化けが解消するか試します。
export LANG=ja_JP.UTF-8
export LC_CTYPE=ja_JP.UTF-8
文字化けが治るなら、設定ファイル .bash_profile に追記します
export LANG=ja_JP.UTF-8
export LC_CTYPE=ja_JP.UTF-8
tmp ディレクトリと Controller.php ファイルを除外して DIRA と DIRB のdiffをとります。
colordiff -r --exclude=tmp --exclude=Controller.php DIRA DIRB
colordiff -r DIRA DIRB grep -v ".DS_Store"
このエラーは純粋に「名前」と 「メールアドレス」が設定されていないというだけのエラーです。 設定箇所がグローバルとローカルの二つあります。 とりあえずはローカルで設定してみましょう。
.git/config を vim エディタで編集します
vim ./git/config
以下の内容を追加して保存する。
[user]
email = <あなたのメールアドレス>
name = <ユーザー名>
なお email は GitHub や GitLab を リモートリポジトリに設定している場合は、
サイトのアカウントのメールアドレスにしておかないと リモートプッシュする時にエラーとなりますので注意してください。
git push で次のようなエラーが出ることがたまにあると思います。 この時の対処法です。
error: failed to push some refs to 'https://YOUR-GIT-SITE/myapp.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
前回と今回の push までの間にリモートが更新されているので、あなたのローカルに存在しないファイルがありますよとの事なのでマージしましょう。
git fetch
git merge origin/master
git merge origin/masterを実行すると viエディタが自動で立ち上がり、次のようなメッセージが表示されるので、 一番下にマージする理由を記述して保存しましょう。(保存コマンド [esc]の後に : wq [enter] を連続で押す)
Please enter a commit message to explain why this merge is necessary
git push origin master
du -h ディレクトリ名
du -h -s ディレクトリ名(指定したディレクトリのみ表示)
du -h -a ディレクトリ名(一覧表示)
容量の大きいディレクトリを発見するにはルートディレクトリから grep で
du -h | grep [0-9]G
du -h | grep [0-9][0-9][0-9]M
とするといいでしょう
df -hT
です。
真っ先にチェックすべきはこのディレクトリです
/var/log/
ブルートフォースアタック(総当たり攻撃)を受けている場合ログのサイズが飛躍的に大きくなっていますのでログサイズが大きい場合はどういうアタックがされているのかも合わせてチェックすると良いでしょう。
/var/cache/
/home
/usr
/var/lib/mysql
/var/lib/pgsql
/var/spool/mail
/root/Maildir
等です。
まずはyumキャッシュの要領を確認
du -sh /var/cache/yum/
キャッシュの削除
sudo yum clean all
(rootユーザからは実行できません)
composer clear-cache
last reboot
last -1 reboot | grep reboot | awk '{print $5, $6, $7, $8}'
Mac OSX で lsした時にパーミッションの最後に@がつく事があります
-rw-------@ 1 hogehoge staff 1700 10 19 2017 myfile.zip
ls -l@
例
-rw-------@ 1 hogehoge staff 1700 10 19 2017 myfile.zip
com.apple.quarantine 20
例
xattr -d com.apple.quarantine:myfile.zip
サーバー管理の作業中はエディタは viでする事が多いかと思いますが、 次のようにして Sublime Text で開く事ができます。
あらかじめ、リモートへssh接続しておき、以下のコマンドで rsub をインストールします。
wget -O /usr/local/bin/rsub \https://raw.github.com/aurora/rmate/master/rmate
chmod a+x /usr/local/bin/rsub
・「Command」+「Shift」+「P」
・rsub で検索
・rsub をクリックしてインストール
vi ~/.ssh/config
で エディタを立ち上げて
Host YOUR.SERVER.NAME
RemoteForward 52698 localhost:52698
YOUR.SERVER.NAME を適宜書き換えてください。
52698 ってなに?
The -R option sets up a reverse tunnel. The first 52698 names a port on the remote. It will be connected to localhost:52698 or the same port on the connecting box. That port number is the default for TextMate 2 and rmate, so you should now be able to edit away.
ssh USER@YOUR-SERVER.TLD -p 59999 -i ./.ssh/YOUR-ID-RSA-KEY
ポート番号(59999) 秘密鍵ファイル(./.ssh/YOUR-ID-RSA-KEY)は適宜書き換えてください
Sublime Text で該当ファイルが開ければ成功です。
openssl を使ってサーバへ接続
openssl s_client -connect YOUR-SERVER-TLD:993
ログインの実行(「YOUR@SERVER.TLD」「YOUR-PASSWORD」は適宜書き換えてください)
? login YOUR@SERVER.TLD YOUR-PASSWORD
(先頭の 「?」 の文字は 何でもいいです(A01 とかでもOK))
? list "" "*"
"INBOX" を選択
? select "INBOX"
"INBOX.Sent" を選択
? SELECT "INBOX.Sent"
? DELETE "INBOX.[Airmail].Memo"
NO Cannot delete currently-open folder. で削除できない場合は、あなたは今そのフォルダの中にいます。
一度別の inbox を select してから削除してください。
? LOGOUT
vimのカラーを人気の molokai に設定する
次のコードを一括コピペでターミナルに貼り付ければOKです。
mkdir ~/.vim
cd ~/.vim
mkdir colors
git clone https://github.com/tomasr/molokai
mv ~/.vim/molokai/colors/molokai.vim ~/.vim/colors/
echo "colorscheme molokai" >> ~/.vimrc
cd
コマンドがない場合は以下のようにインストールしましょう。CentOS の場合は以下のコマンドでインストールできます。
sudo yum install -y netcat
nc -v -z 192.168.33.10 20-80
結果例
例:(80番ポートが空いている場合)
Connection to 192.168.33.10 port 80 [tcp/http] succeeded!
例:(20079番ポートが空いていない場合)ファイアーウォールで却下された可能性がある場合
nc: connectx to 192.168.33.10 port 20079 (tcp) failed: Connection refused
例:(20079番ポートが空いていない場合)そもそもこのマシンのポートが開いていない可能性がある場合
nc: connectx to 192.168.33.10 port 20079 (tcp) ailed: Operation timed out
1行で書けるのでオススメです。
ヒストリにパスワードが残ってしまうのでヒストリ削除を忘れないように。
例:ftpサーバの /test.txt をダウンロードします。
curl -O -u ID:PASS ftp://YOUR-SERVER.COM/test.txt
ftp YOUR-SERVER.COM
ID
PASS
ls
get test.txt
chroot する時によく使用します。
例:「/bin」を「/root/myfolder/bin/」としても使用できるようにする
cd /root
mkdir myfolder
mkdir myfolder/bin
mount -o bind /bin /root/myfolder/bin/
例:「/lib64」を「/root/myfolder/lib64」としても使用できるようにする
mount -o bind /lib64 /root/myfolder/lib64
mount
結果例
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/xvda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
none on /proc/xen type xenfs (rw)
/etc/named on /var/named/chroot/etc/named type none (rw,bind)
/var/named on /var/named/chroot/var/named type none (rw,bind)
/etc/named.rfc1912.zones on /var/named/chroot/etc/named.rfc1912.zones type none (rw,bind)
/etc/rndc.key on /var/named/chroot/etc/rndc.key type none (rw,bind)
/usr/lib64/bind on /var/named/chroot/usr/lib64/bind type none (rw,bind)
/etc/named.iscdlv.key on /var/named/chroot/etc/named.iscdlv.key type none (rw,bind)
/etc/named.root.key on /var/named/chroot/etc/named.root.key type none (rw,bind)
後ろの(rw,bind)のように bind がついているものが bind オプションで作成されたものです。
umount <ディレクトリ名>
またはマシンを再起動すると自分で mount したディレクトリは解除されます。
すでに存在するディレクトリ(例えば /bin/ )に別のディレクトリをマウントすることもできます。
これをしてしまった場合、詰みますので、速やかにマシンをリブートしてください。
例えば /bin/bash コマンドを使用したい場合は次のファイルも使用できる状態でないといけません
ldd /bin/bash
結果
linux-vdso.so.1 => (0x00007fff29d52000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007feb46d7b000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007feb46b77000)
libc.so.6 => /lib64/libc.so.6 (0x00007feb467e3000)
/lib64/ld-linux-x86-64.so.2 (0x00007feb46f9c000)
~/.ssh/config を編集します
vi ~/.ssh/config
自動応答を15秒おきに送信するようにします( デフォルトは 0 )
ServerAliveInterval 15
touch の -t オプションでは 年を省略して 「月」「日」「時」「分」を2桁ずつ指定することができます。
touch -t 02071500 my_file
touch の -t オプションでは 年を指定したい場合は「年」 「月」「日」「時」「分」を2桁ずつ指定します。
touch -t 1902071500 my_file
-t オプションを指定しないと現在時刻が設定されます
touch my_file
・現在の日付で 起点となるファイル「datefile」を作成する
touch datefile
・特定の日付(2018/2/14)で起点となるファイル「datefile」を作成する
touch -m -d '2018/2/14 00:00:00' datefile
・FreeBSDの場合は次のようにして作成してから日付を変更する
touch datefile
touch -t 201802140000 datefile
・Macの場合は -t オプションを使用して 日付を指定して中身が空のファイルを作成する
touch -t 201802140000 datefile
find . -type f -newer datefile
mkdir updated_files
find . -type f -newer datefile -print0 |xargs -0 cp --parents -t ./updated_files
cp コマンドオプションの説明( Linux )
--parents ディレクトリ 階層もコピーする
-t ターゲットディレクトリ
mkdir updated_files
find . -type f -newer datefile -exec cp {} updated_files \;
find -exec コマンドオプションの説明( FreeBSD )
-exec コマンドを実行する
{} 全てのファイルが対象
\; コマンドの区切り文字(必ずつける)
cat /etc/passwd
whereis bash
結果表示例
bash: /usr/local/bin/bash /usr/local/man/man1/bash.1.gz
chsh -s /usr/local/bin/bash
例 : 定期的 10分(600秒) にあるサイトにアクセスします
#/bin/bash
function exec_curl(){
TARGET_URL=$1
curl ${TARGET_URL}
}
# テスト用
while true;
do
exec_curl http://xxx.yyy.zzz/
echo
echo
date
sleep 600
done
http://mollifier.hatenablog.com/entry/20100317/p1
# cat /proc/cpuinfo # CPU model
# cat /proc/meminfo # Hardware memory
# grep MemTotal /proc/meminfo # Display the physical memory
# watch -n1 'cat /proc/interrupts' # Watch changeable interrupts continuously
# free -m # Used and free memory (-m for MB)
# cat /proc/devices # Configured devices
# lspci -tv # Show PCI devices
# lsusb -tv # Show USB devices
# lshal # Show a list of all devices with their properties
# dmidecode # Show DMI/SMBIOS: hw info from the BIOS
id -a
uid=1002(ftpuser) gid=1002(ftpuser) groups=1002(ftpuser),1000(www)
所属グループ【ftpuser】【www】であることがわかります
newgrp グループ名
root ユーザでないと実行できません
例 ) ユーザ「ftpuser」のプライマリグループを「www」に設定する。(セカンダリグループは削除されます)
usermod -g www ftpuser
(指定しないセカンダリグループは削除されます。所属したいグループ全てをカンマで区切って指定します)
usermod -G mygroup1 , mygroup2 ftpuser
tar -zcvf xxxxx.tar.gz directory_name
tar -zxvf xxxxx.tar.gz
上記コマンドで解凍すると、カレントディレクトリ(現在いるディレクトリ)下に解凍されます。
特定のディレクトリ下に解凍するには -C オプションを使用します。
test ディレクトリの下に(圧縮したもとのディレクトリを作成して)解凍します。testディレクトリがない場合はエラーとなります。
tar -zxvf xxxxx.tar.gz -C /var/test
unzip file_name
testディレクトリ以下の 3日前より古いファイルを検索するコマンドは
find ./test/* -mtime +3
とします。
testディレクトリ以下の 3日前より古いファイルを削除するコマンドは
find ./test/* -mtime +3 -exec rm -f {} \;
とします。
unixであるディレクトリ以下のすべてのファイルを再帰的に権限変更(chmod)するには以下のようにパイプを使って流し込みます
find ./ -type f -print0 | xargs -0 chmod 0666
find ./ -type d -print0 | xargs -0 chmod 0777
find . -name "*.log" -type f -print0 | xargs -0 chmod 0666
find . -name "*.sqlite3" -type f -print0 | xargs -0 chmod 0666
find に `
-print0xargsに
-0`
をつけることによってスペースを含むファイルも処理できるようにしています
find ./ -name templates_c -type d -print | xargs chmod 0777
find ./ -name cache -type d -print | xargs chmod 0777
UNIX系OS(Linux, FreeBSD)のOS種別とバージョンを確認するコマンドは以下のものがあります。
cat /etc/os-release
uname -a
結果例
Linux desktop 2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 23:42:43 UTC 2011 x86_64 GNU/Linux
cat /etc/redhat-release
結果例
CentOS Linux release 7.2.1511 (Core)
cat /proc/version
結果例
Linux version 2.6.18-400.1.1.el5PAE (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-55)) #1 SMP Thu Dec 18 01:38:34 EST 2014
cat /proc/cpuinfo
テキストファイルから重複行を削除するには
エクセル等で作業する方が多いみたいですが、unixコマンド一発です。
uniq ファイル名
重複行が削除されたテキストが画面上に表示されます。
結果をファイルに保存したい場合は
uniq ファイル名 > 保存するファイル名
でOK。
ログイン状況を確認するコマンド群
現在ログインしている全てのユーザーを見る
who
ログイン履歴、ホスト名を表示
last -a
最終ログイン時刻、ホスト名を表示
lastlog
sudo は一時的に別のユーザーになってコマンドを実行するコマンドです。
このsudoを設定するコマンドがvisudoです。
【hoge】 ユーザーが コマンド【/usr/bin/testcommand】をパスワードなしで実行できるようにするには
(root) ユーザーになって
visudo
を実行します。(エディタ vi が起動します。)
一番下に
hoge ALL=(ALL) NOPASSWD: /usr/bin/testcommand
と記述します。これだけで設定完了です。
なお全てのコマンドを sudo で実行できるようにするには
hoge ALL=(ALL) NOPASSWD: ALL
と記述します。
実行は(hoge)ユーザーになって
sudo /usr/bin/testcommand
とするとrootユーザーが上記コマンドを実行したことになります。
visudo を実行して
# Defaults requiretty
と「Defaults requiretty」の先頭にシャープをつけてコメントアウトします。
するとシェルにログインできないユーザーでもsudoを実行することが出来ます。
( PHPから sudo をする場合にはこの設定を行った後下記リンクのように設定します )
参考:http://hogehack.blog80.fc2.com/blog-entry-36.html
colordiffというdiff(ファイル比較コマンド)の結果に色を付けるコマンドがあり、なかなか便利なので導入してみます。
Linuxの場合 : インストールは yumコマンド一発
yum install colordiff
Mac OSの場合 : インストールは brewコマンド一発
brew install colordiff
colordiff ファイル1 ファイル2
cat diff_result.txt | colordiff
色の設定ファイルは /etc/colordiffrc というファイルなのでこれをホームディレクトリの .colordiffrc というファイルにコピーして使用する
cp /etc/colordiffrc ~/.colordiffrc
中身はこんな感じ
banner=no
plain=black
newtext=darkblue
oldtext=darkred
diffstuff=darkgreen
cvsstuff=darkwhite
曖昧検索を行うコマンド「agrep」 というのがあるが、標準ではインストールされていない事がある。
のでまず「yum」コマンドを使ってインストール(Fedora Coreの場合)
yum install agrep
インストールが完了したら
whereis agrep
で確認。
■ agrepの使い方(普通の検索)
agrep wordtest /usr/share/dict/words
単語「wordtest」が /usr/share/dict/words にあるかどうか検索する。(普通の検索)
■ agrepの使い方(あいまい検索)
agrep -1 wordtest /usr/share/dict/words
単語「wordtest」に1文字分の間違いを許容した範囲で検索する。(あいまい検索)
■ agrepの使い方(あいまい検索 Best-match)
agrep -i -y -B wordtest /usr/share/dict/words
オプション -B をつけると一番近いと思われる単語を検索する
UNIXでのファイル名変更コマンドは
mv file1.cgi file1.txt
(file1.cgi を file1.txt という名前に変更する)
ですが、これを一括でしようと思って
mv *.cgi *.txt
としてもエラーとなります。
そこで for文 を使って
for fname in *.cgi; do mv $fname ${fname%.cgi}.txt; done
とします
参考:http://www.atmarkit.co.jp/flinux/rensai/linuxtips/248chngext.html
・1. 環境変数 CVS_RSHを設定する。
bashの場合
export CVS_RSH=ssh
tcshの場合
setenv CVS_RSH ssh
・2. CVSコマンドを実行する
cvs -d hogehoge@myhost.com:/home/hogehoge/CVSROOT checkout projectname
ユーザー名:hogehoge
ホスト名:myhost.com
CVSディレクトリ:/home/hogehoge/CVSROOT
プロジェクト名:projectname
■1.「testuser」というユーザーを追加するには次のコマンドを使用する
(シェル(ssh telnet)でのログインをさせない場合)
useradd -s /sbin/nologin testuser
(シェル(ssh telnet)でのログインをさせる場合)
useradd testuser
■2. 次に作成した「testuser」ユーザーのパスワードを設定する
passwd testuser
macやunixのターミナルであるディレクトリ以下の合計ファイル数を知るには
● 合計ファイル数:
ls -laR | grep -c '^-'
● 合計ディレクトリ数:
ls -laR | egrep -c '^d.+[^.]$'
でいけます。
なおディレクトリ以下に作成するファイル数は 5000以内 にとどめておいたほうがでしょう。
関連: ファイル・ディレクトリ容量やディスクの空き容量を取得する http://logic.moo.jp/memo.php/archive/97/
http://taku910.github.io/mecab/#download
「mecab-0.996.tar.gz」(mecab本体)
「mecab-ipadic-2.7.0-20070801.tar.gz」(辞書ファイル)
をダウンロードする。
形態素解析mecabのソースファイルをダウンロード
http://taku910.github.io/mecab/#download
tar xvf mecab-0.996.tar.gz
cd mecab-0.996
./configure --enable-utf8-only --prefix=/opt/local/
make
sudo make install
( --with-charset=utf8 で文字コードをutf8にしている)
( --prefix=/opt/local/ でインストール先を指定している)
tar xvf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-mecab-config=/opt/local/bin/mecab-config --with-charset=utf8 --prefix=/opt/local/
make
sudo make install
echo 'export PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
source .bash_profile
mecab
で mecabを起動する。
後は解析したい日本語を入力するだけ。
ダチョウ倶楽部のメンバーは肥後克広と寺門ジモンと上島竜兵である。
ダチョウ 名詞,一般,*,*,*,*,ダチョウ,ダチョウ,ダチョー
倶楽部 名詞,一般,*,*,*,*,倶楽部,クラブ,クラブ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
メンバー 名詞,一般,*,*,*,*,メンバー,メンバー,メンバー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
肥後 名詞,固有名詞,人名,姓,*,*,肥後,ヒゴ,ヒゴ
克広 名詞,固有名詞,人名,名,*,*,克広,カツヒロ,カツヒロ
と 助詞,並立助詞,*,*,*,*,と,ト,ト
寺門 名詞,固有名詞,人名,姓,*,*,寺門,テラカド,テラカド
ジモン 名詞,固有名詞,人名,名,*,*,ジモン,ジモン,ジモン
と 助詞,並立助詞,*,*,*,*,と,ト,ト
上島 名詞,固有名詞,人名,姓,*,*,上島,ウエシマ,ウエシマ
竜 名詞,固有名詞,人名,名,*,*,竜,リュウ,リュー
兵 名詞,接尾,一般,*,*,*,兵,ヘイ,ヘイ
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある 助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
。 記号,句点,*,*,*,*,。,。,。
brew install xz
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
./bin/install-mecab-ipadic-neologd
なお、デフォルトでは一部の辞書はインストールされませんので 、全部入りな mecab-ipadic-NEologd をインストールするには
./bin/install-mecab-ipadic-neologd -n -a
とします。
インストールされた辞書は次のコマンドで確認することができます
echo `mecab-config --dicdir`"/mecab-ipadic-neologd"
インストールされた辞書の場所を調べた後次のように実行します
mecab -d /opt/local/lib/mecab/dic/mecab-ipadic-neologd
ダチョウ倶楽部のメンバーは肥後克広と寺門ジモンと上島竜兵である。
ダチョウ倶楽部 名詞,固有名詞,人名,一般,*,*,ダチョウ倶楽部,ダチョウクラブ,ダチョークラブ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
メンバー 名詞,一般,*,*,*,*,メンバー,メンバー,メンバー
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
肥後克広 名詞,固有名詞,人名,一般,*,*,肥後克広,ヒゴカツヒロ,ヒゴカツヒロ
と 助詞,並立助詞,*,*,*,*,と,ト,ト
寺門ジモン 名詞,固有名詞,人名,一般,*,*,寺門ジモン,テラカドジモン,テラカドジモン
と 助詞,並立助詞,*,*,*,*,と,ト,ト
上島竜兵 名詞,固有名詞,一般,*,*,*,上島竜兵,ウエシマリュウヘイ,ウエシマリューヘイ
で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある 助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
。 記号,句点,*,*,*,*,。,。,。
EOS
しっかり固有名詞 肥後克広 , 寺門ジモン , 上島竜兵 が登録されています
コマンドラインからmecabを使う1つの方法として do_mecab というシェルスクリプトを作成する。
/opt/local/bin/do_mecab というファイルを下記の内容で作成する
sudo vi /opt/local/bin/do_mecab
#! /bin/sh
echo $*|/opt/local/bin/mecab -d /opt/local/lib/mecab/dic/mecab-ipadic-neologd
作成後実行権限を与える
chmod 755 do_mecab
これで
do_mecab ダチョウ倶楽部のメンバーは肥後克広と寺門ジモンと上島竜兵である。
で実行できる。
telnet servername.com 110
USER hoge
+OK Password required.と表示されるので続けてパスワードを入力する
PASS password
+OK logged in.と表示されればログイン成功。
STAT
+OK 512 99312506 と返されてきた場合【512通】【99312506バイト(99M)】メールサーバに保存されている。
各メールごとのサイズを知るには
LIST
1 702 2 702 3 1207 ……(以下続く)なお番号は古い順
RETR 15
QUIT
crontab -e
でcronの設定ファイルを編集する。 (上記コマンドでviが立ち上がるのでviの操作に慣れておく必要がある)
設定ファイルに記述する内容は
45 04 * * * /var/test/cron.autoexec.sh
という風に記述する。
上記記述では毎日4時45分に【/var/test/cron.autoexec.sh】というファイルを実行する。
当然【/var/test/cron.autoexec.sh】には実行権限が必要。
左側の数字は
「分」「 時」「 日」 「月」 「曜日」を表してて、表記方法は下記の例を参照
例;
30 * * * * 毎自 30分に実行
43 23 * * * 毎日 23:43に実行
12 05 * * * 毎日 05:12に実行
0 17 * * * 毎日 17:00に実行
0 17 * * 1 毎週月曜の 17:00に実行
0,10 17 * * 0,2,3 毎週日,火,水曜の 17:00と 17:10に実行
0-10 17 1 * * 毎月 1日の 17:00から17:10まで 1分毎に実行
0 0 1,15 * 1 毎月 1日と 15日と 月曜日の 0:00に実行
42 4 1 * * 毎月 1日の 4:42分に実行
0 21 * * 1-6 月曜日から土曜まで 21:00に実行
0,10,20,30,40,50 * * * * 10分おきに実行
*/10 * * * * 10分おきに実行
* 1 * * * 1:00から 1:59まで 1分おきに実行
0 1 * * * 1:00に実行
0 */1 * * * 毎時 0分に 1時間おきに実行
0 * * * * 毎時 0分に 1時間おきに実行
2 8-20/3 * * * 8:02,11:02,14:02,17:02,20:02に実行
30 5 1,15 * * 1日と 15日の 5:30に実行
crontab -l
なお実行結果は `
/var/log/cron`
に記録されていきますので以下のコマンドで確認します
cat /var/log/cron
1. 最新版の kakasi をダウンロード( http://kakasi.namazu.org/ )し
辞書の元ファイル(kakasidict)をアップロードしておく.
(アップロードファイル)kakasidict (アップロード先)/usr/local/share/kakasi/
2. 「kakasi_dictionary_artist.txt(例)」というファイルに追記していく
例:(最初にひらがな、次に半角スペース、次に漢字)
文字コード【EUC】改行コード【LF】
よみ 漢字
3. ディレクトリ移動と辞書ファイルのバックアップ
cd /usr/local/share/kakasi/ (ディレクトリ移動) cp kanwadict kanwadict.backup(辞書ファイルのバックアップ)
4. 辞書追加コマンド(mkkanwa)を実行
「mkkanwa 辞書ファイル 元ファイル 追加ファイル」
/usr/local/bin/mkkanwa kanwadict kakasidict kakasi_dictionary_artist.txt
■ モードの移動
([esc]を押すとコマンドモードへ)
([a]または[i]を押すとファイル編集モードへ)
[esc] <-> [a]または[i]
■ ファイル関係(コマンドモードから実行する)
[:q!] :ファイルを保存せずに終了 [:wq] :ファイルを保存して終了
■ カーソル移動(コマンドモードから実行する)
[1G] :ファイルの先頭に移動 [G] :ファイルの末尾に移動 [ctrl+f] :1ページ下へ移動 [ctrl+b] :1ページ上へ移動 [/] :下に向かって文字列検索 [?] :上に向かって文字列検索
■1. まず 変換可能な文字コードを調べる
iconv -l
(ここで表示された文字コードのみ変換対象となるので事前に確認する)
■2. 次にコマンドを実行する
(EUC-JPで書かれたファイルin.txt)を(SHIFT_JISのout.txt)に変換する
iconv -f EUC-JP -t SHIFT_JIS < in.txt > out.txt
オプション
- f:fromcode 変換元の文字コードを指定する
- t:tocode 変換先の文字コードを指定する
http://kakasi.namazu.org/stable/kakasi-2.3.4.tar.gz をダウンロード tar zxvf kakasi-2.3.4.tar.gz cd kakasi-2.3.4 ./configure make make install
kakasi -w とすると入力受付モードでkakasiが起動する。 何か適当な文章を入力してみる (例) 長い長い文章入力のテスト隣の客はよく柿食う客だ 長い 長い 文章 入力 の テスト 隣 の 客 はよく 柿 食う 客 だ
echo 隣の客はよく柿食う客だ | kakasi -Ja tonariのkyakuはよくkakikuukyakuだ (-Ja 漢字(J)をローマ字(a)に変換)
変換のオプションは
a: ascii
j: jisroman
g: graphic
k: kana (j,k defined in jisx0201)
E: kigou
K: katakana
H: hiragana
J: kanji(E,K,H,J defined in jisx0208)
echo カタカナニュウリョクノテストッス | kakasi -KH (出力結果)かたかなにゅうりょくのてすとっす
echo 細野晴臣 | kakasi -w | kakasi -Ja (出力結果)hosono haruomi
例えば一般的に
【ll】というコマンドは【ls -l】のエイリアスであることが多い。
この設定をするのが
alias
とすると現在設定されているエイリアスの一覧を表示する。
エイリアスを設定するには
alias ll='ls -la --color=tty'
とする(bashの場合)
これで【ll】が【ls -la --color=tty】に変更される。
外部サーバにバックアップをとるコマンド rsync あらかじめ外部サーバに ssh でパスワード無しで接続できるよう設定しておく必要がある。
(SSHをパスワード無しで接続する↓) https://pgmemo.tokyo/data/archives/250.html
rsync コマンド例
rsync -avzL --delete -e ssh /home/mydata user@hostname.com:/var/www/backup
rsync -avz --delete myhost:/home/myuser/tmp/ ~/Downloads/tmp/
バックアップ元サーバの【/home/mydata】以下を全て
バックアップ先サーバ(user@hostname.com)の【/var/www/backup】以下に
バックアップを作成する。
-a :全てのデータをコピーする
-v :転送状態を表示する
-z :圧縮して転送します
-L :(シンボリックリンクを解決して)リンク先のファイルを転送する
--delete :バックアップ元で削除されたファイルはバックアップ先でも削除する
-e ssh :sshを使って転送する
システムの連続起動時間を表示するには下記のコマンドを実行する
uptime
# 現在時刻 稼働時間 ログインユーザー数 ロードアベレージ 12:20:24 up 16:59, 2 users, load average: 0.00, 0.02, 0.00
chkconfig -list
chkconfig サービス名 off
chkconfig サービス名 on
free
で手っ取り早く見れる。
詳しく見る場合は
ps aux
で全てのプロセスを表示する
【SIZE】仮想分も含めた使用サイズ(Kバイト)
【RSS】実メモリ上の使用サイズ(Kバイト)
らしい。いわゆるメモリの使用量を見るには【RSS】か。
なおプロセスID【PID】は99999 まで行くと戻る(使用可能な最小値に?)という事らしい。
top
は 2秒毎にプロセス状態を調べる。
メモリ総使用量が上に表示されるのでここをチェックする。
ほっておくとずっと起動し続けているので【q】を押して終了する。
参考:
http://www.math.kobe-u.ac.jp/~kodama/tips-free-memory.html
http://www.itmedia.co.jp/help/tips/linux/l0158.html
gpasswd:(グループにパスワードを設定する)
groupadd:新規グループの作成
groupdel:グループの削除
groupmod:グループ情報の変更
passwd:ユーザーパスワードの変更
useradd:ユーザーアカウントの新規作成
userdel:ユーザーアカウントの削除
usermod:ユーザーアカウント情報の変更
ユーザの所属するグループを見るには
id (ユーザ名)
convert (1つのファイルに対して操作したいとき)
mogrify(複数のファイルに対して操作したいとき)
# in.jpg を jpeg 画質80 の out.jpg に変換する convert -quality 80 in.png out.jpg
SMTP(メール送信サーバ)への接続はtelnetを使用して下記のように入力する。
telnet your.host.name.jp 25
接続されたら次のように入力する
HELO hoge@test.test.com
MAIL FROM:hoge@test.test.com
RCPT TO:mail@test.test.com
DATA
mail honbun
.
終了するには次のコマンドを入力する
QUIT
まず SMTP Authentication用文字列を生成する ユーザー名:testuser パスワード:password の時シェルから以下のように入力
perl -MMIME::Base64 -e 'print encode_base64("testuser?0testuser?0password");'
生成された文字列
dGVzdHVzZXIAdGVzdHVzZXIAcGFzc3dvcmQ=
をコピーしておく。
telnet your.host.name.jp 587
でsmtpへ接続して
EHLO localhost
AUTH PLAIN dGVzdHVzZXIAdGVzdHVzZXIAcGFzc3dvcmQ=
235 2.0.0 OK Authenticated
と返れば成功。以下のコマンドは同じ
MAIL FROM:hoge@test.test.com
RCPT TO:mail@test.test.com
DATA
mail honbun
.
USER ユーザー名
PASS パスワード
LIST (※メール一覧を表示)
RETR xxx ( xxx番目のメールを表示 )
QUIT
POP Before SMTP の許可IPアドレスを見るには SMTPサーバにシェルログインして root ユーザーから
makemap -u hash /etc/mail/popauth.db
とする
yum install パッケージ名
yum check-update
yum update [ パッケージ名 ]
yum remove [ パッケージ名 ]
yum search [キーワード]
yum list installed
yum list [ オプション または パッケージ名 ](概要)
yum info [ オプション または パッケージ名 ](詳細表示)
オプション
available インストール可能なパッケージの情報を一覧表示する。
installed システムにインストールされているパッケージの情報を一覧表示する。
recent 最近追加されたパッケージの情報を一覧表示する。
updates 更新可能なパッケージの情報を一覧表示する。
■ wgetコマンド
wget -r -nc -l 5 -A htm,html,shtml,php,cgi -nd -nH http://www.yahoo.co.jp/
[ オプション ]