apt
ubuntuの最新パッケージ一覧を取得
sudo apt update
ubuntuの最新パッケージの更新
# 全て
sudo apt upgrade
# 一覧
apt list --upgradable
# 指定
sudo apt install --only-upgrade <packageName>
依存関係が変わり不要となったパッケージの削除
sudo apt autoremove
参考:
https://qiita.com/ynott/items/0c3d99cba3753c7d0ae6
grep
grep -n 文字列 ファイルのパス
オプション-nは行番号を表示する
grep -C 表示する前後の行数 ファイルのパス
grep -nir '文字列' ./パス --exclude="ファイル名"
grep -nir '文字列' ./パス --exclude-dir="ディレクトリ名"
一括置換
grep -rl '置換対象の文字列' ./* | xargs sed -i.bak -e 's/置換対象の文字列/置換後の文字列/g'
sed -i.bak
でバックアップファイル作成
参考:
find
基本的な使い方
find 探したいパス -name ファイル名
- ワイルドカードを使う時は
*
を使う
180日前から現在までの、カレント直下の、ディレクトリで、修正されたディレクトリを表示する。
find ./ -maxdepth 1 -type d -mtime -180
less
ログの更新をリアルタイムで追跡
less +F ファイル名
grepとlessで対象のみを出力
grep '検索したい文字列' ファイル名 | less
grep -C 2 '対象の文字列' ファイル名 | less
// -A 前 -B 後 -C 前後
lessの中で検索
/検索したい文字列
lftp
よく使うコマンド達
lftp -u username,password host
lftp sftp://${HOST} -p ${PORT} -u ${USER}
# downloadする
get filename
mget filenames
# Uploadする
put filename
mput filename
# カレントディレクトリをdownload
mirror -F dirname
#カレントディレクトリをupload
mirror -R
設定ファイル(.lftprc
)
-
自己証明やIPが動的に動くサーバへの接続時に接続を拒否される時がある。つまり ssl/tls プロトコルでの接続ができない時がある。
+ set ssl:check-hostname no + set ssl:verify-certificate no
-
ssl:check-hostname no
: この設定は、lftpがSSL/TLS接続でサーバーの証明書を検証する際に、その証明書のホスト名が接続先のホスト名と一致するかどうかのチェックを行わない。 -
ssl:verify-certificate no
: この設定により、lftpはSSL/TLS接続でサーバーから提供される証明書の信頼性(証明書が信頼できる発行元によって署名されているかどうか)を検証しない。
-
sftp
# 接続する
sftp username@host
> password
sftp sshHost
# ダウンロードする
get fileName
get -r dirName
diff
Linuxdiff
diff -uwBb ./{main,recruit}/cms-admin/.htaccess
vim diff
vimdiff ./{main,recruit}/cms-admin/.htaccess
開いた状態で :vertical diffsplit recruit/cms-admin/.htaccess` `
file
-
テキストファイル
文字だけで構成される、人間が読むことのできるファイル
-
バイナリファイル
テキストファイル以外の人間が読むことのできないファイル
拡張子:人間が種類を区別しやすくするための印。中身と関係ない
ファイルシグネチャ: ファイルの先頭に数バイト決められた文字列が並んでいる。OSはこれで種類を判断する
file {filename}
でファイルの情報を表示。textだったらテキストファイル、dataだったらバイナリファイルか表示不能なファイル
crontab
[artis@sitexweb2 crontab]$ crontab -l
0 * * * * /usr/bin/php /data/www/app/cli-generator.php 1>/dev/null 2>>/home/hoge/tools/crontab/error.log
30 0 * * * /usr/bin/sh /home/hoge/tools/backup/backup.sh 1>/dev/null 2>>/home/hoge/tools/backup/error.log
// cronに設定されている内容をリストで出力する
[artis@sitexweb2 crontab]$ crontab -l > crontab.txt
// cronに設定されている内容をcrontab.txtに書き込む(最新とtxtに書き込まれている内容に差がある場合があるから)
[artis@sitexweb2 crontab]$ vim crontab.txt
// 任意の行を削除する
[artis@sitexweb2 crontab]$ crontab < crontab.txt
// crontab.txtに書き込んだ内容をcrontabに反映する。
[artis@sitexweb2 crontab]$ crontab -l
30 0 * * * /usr/bin/sh /home/hoge/tools/backup/backup.sh 1>/dev/null 2>>/home/hoge/tools/backup/error.log
ping
ping [option] <host>
ping -c 5 www.google.com
ftp
su
su
> password: rootユーザーのパスワード
でrootユーザーになれる。
プロンプトの記号が $
→ #
になる。
exti
Ctrl + C
でログアウト
sudo
sudo [option] command
> password: 一般ユーザーのパスワード
[option]
-b 指定したコマンドをバックグラウンドで実行
-l そのユーザーに対して許可されているコマンド一覧表示
-u ユーザーを指定して実行
そのコマンドだけroot権限で実行できる。
ユーザー・グループ
調べ方
-
対象のディレクトリの所有者とグループを確認
grep "グループ名" /etc/group # or getent group グループ名
グループ名:パスワードフィールド(通常は使用されないためxが表示される):グループID:グループメンバーのリスト
という出力がされる。そのグループに含まれる全ユーザーの一覧である。
- そのグループに含まれているユーザーのみが、そのグループに付与されている権限を行使できる。つまり、出力された一覧に、期待しているユーザーがいない場合、そのユーザーはothersとして扱われる。
権限
wrx
-
drwxrwxrwx 777 ディレクトリ
-
frwxr-xr-x 755 ファイル(fのかわりに - の可能性あり)
-
r 4 w 2 x 1 これの足し算で権限がきまる
chmod 777 file名・directory名 chmod -R 777 directory名
-
読み取り r
- ファイル:内容を閲覧できる
- ディレクトリ:それ内のファイル名やディレクトリ名の一覧を閲覧できる
-
書き込み w
- ファイル:内容を変更・削除できる
- ディレクトリ:それ内に新しいファイル¥ディレクトリを作成、既存のものを削除できる
-
実行 x
- ファイル:プログラムやスクリプトなら、実行できる
- ディレクトリ:それ内にcdで入ることができる
Apacheサーバーの権限
- Apache(HTTPD)プロセスは特定のユーザー(apacheやwww-dataなど)として実行される。Webサーバーがアクセスできるファイルやディレクトリに限定し、最小限の権限のみを与えるべき。
- 例えば、Webサイトのファイルにはrを与え、ログファイルやアップロードされたファイルにはwを与える。プログラムやスクリプトには必要なものにxを与える。
ln
基本的な使い方
ln -s <targetDir/File> <linkName>
# 同じ名前のシンボリックリンクがカレントに貼られる
ln -s <targetDir>
シンボリックリンクの名前を変更したい時は、一旦削除して再度リンクを貼るのような手順を踏む
rm <linkName>
ln -s <targetDir> <linkName>
WSL Shutdown
wsl --shutdown
ファイル
そのファイルの情報を調べる
stat <filename>
標準出力をファイルに書き込む
ls -a > <file>
ファイル名のみ知りたい
cd targetDir
ls -F | grep -v / | sed s/\*$//g
ファイルの一部分のみ見たい
tail test.log -n 100
head test.log -n 100
2ファイルの中身を比較
# file1 と file2 をソートされた状態で比較する
sort file1.txt > file1_sorted.txt
sort file2.txt > file2_sorted.txt
# file1にはないがfile2にある行を表示
comm -13 file1_sorted.txt file2_sorted.txt
-
ここでの
comm
コマンドのオプションは以下の意味がある:-
-1
: file1 にのみ存在する行を表示しない -
-3
: 両方のファイルに存在する行を表示しない
-
ファイルの行数
wc -l <file>
ファイル数を数える
ls -1 | wc -l
find . -type f | wc -l
curl
curl -Ss -I -u "username:password" https://hoge.co.jp
-Ss
・・・サーバーからのエラーメッセージを表示する
-I
・・・HTTPヘッダーのみを取得する
-u
・・・Basic認証で使用するIDPWを指定できる
PHPの情報を調べる
-
サーバーにインストールされている、PHPの情報や PHP.ini の情報を調べたい時に使います。
-
権限によっては見れない可能性もあるので注意。
phpinfo()
関数を使う
-
コマンドラインから直接
phpinfo()
関数を実行するphp -i php -i | grep memory_limit
confファイルを直接確認する
-
php.ini
ファイルがどこにあるか確認した上で、直接ファイルの内容を確認するphp --ini cd path_to/ less -S php.ini
特定の設定値だけを確認する
-
PHPのCLIツールを使用して直接確認できる
php -r "echo init_get('memory_limit');"
cat
- もちろんファイルの閲覧に使う(標準出力で見る)
- 標準出力なので、
>
を用いることで、ファイルに記述できる - もともとはファイルを連結して標準出力に出力する、という意味
ファイルの閲覧
cat file1
別ファイルへの書き込み
cat file1 > file2
別ファイルへの追記
cat file1 >> file2
ファイルを連結して出力
cat file1 file3 file3
行番号を付けて出力
cat -n file1
標準入力での入力を書き込む
cat > file
hoge
fuga
ヒアドキュメントを利用して書き込む
cat <<EOF > file
hoge
fuga
moga
EOF
参考: