コマンドぶん投げて定時で帰るためのメモ(※今回はコマンドの概要のみです)
atコマンド 指定した時刻にコマンドを1回だけ実行する
1 2 3 4 // 18:00に指定コマンドを入力 $ at 18:00 at> echo 定時ですかえりましょう | lolcat [Ctrl+d] で抜ける
screenコマンド 仮想端末を作成してそっちでコマンド実行出来る。screenで実行したあとはSSH切っても継続実行される
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 // 仮想端末の一覧を見る(起動してない状態) $ screen -ls No Sockets found in /run/screen/S-9zilla. // 仮想端末を起動 $ screen // なんか時間かかる処理ぶん投げる $ watch date // 現在のセッションからデタッチ [Ctrl+a] [d] // 仮想端末の一覧を見る(さっきデタッチしたやつが一覧に出る) $ screen -ls There is a screen on: 16929.pts-3.9zilla (2017年11月15日 18時10分49秒) (Detached) 1 Socket in /run/screen/S-9zilla. // デタッチした端末にアタッチする(一覧に出てるpidを指定) $ screen -r 16929 // その後終了 $ exit [screen is terminating] // 起動時にセッションに名前をつける $ screen -S [好きな名前] $ screen -S selenium // 起動後にセッションに名前をつける [Ctrl+a] [:] → :sessionname [好きな名前] // 新しいウィンドウを開く [Ctrl+a] [c] // ウィンドウを移動 [Ctrl+a] [0-9] // ウィンドウに名前をつける [Ctrl+a] [A]
例えば同じサーバ上で、だれかほかの人が起動してる仮想端末に参加して共同作業、みたいな事も出来る
1 2 // -x 16929 で乱入して操作を共有出来る $ screen -x 16929
誰かがアタッチ中だったり、回線切れでアタッチしたままになったスクリーンを横取りするには-d
をつける
1 2 3 4 5 6 $ screen -ls There are screens on: 19217.pts-0.9zilla (Attached) // ← アタッチされてる端末 // -d で横取り $ screen -d -r 19217
仮想端末上でスクリプト暴走しちゃってCtrl+Cとかも受け付けなくなってしまった場合
1 2 3 [Ctrl+a] [k] // その後、終了するかどうか(y/n)が出るので、y
scriptコマンド 実行内容のログをとる。bashrcとかに仕込んでおくと、SSHで入ってきた人の行動ログを残したりもできる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 // 「hoge.log」というファイルにログを記録開始 $ script hoge.log Script started, file is hoge.log $ source ~/.bash_profile .bash_profile loaded. $ toilet ズ m mm# # """ # # m" "m mm"" # $ toilet ン mm " # # m" "mm"" $ toilet ド m # # # #mm # ""m # # $ toilet コ m mmmmm """ # m" mmm# """ " $ toilet キヨシ m # mmm mmmmm ""m """"# """" # mm mmmm"#"""" mmm""# " m" "m # m" # mmm""""m "mm"" $ exit exit Script done, file is hoge.log // さっき実行したコマンドの履歴が、「hoge.log」にそのまま記録されてる $ cat hoge.log Script started on 2017年11月15日 18時19分18秒 $ source ~/.bash_profile .bash_profile loaded. $ toilet ズ m mm# # """ # # m" "m mm"" # $ toilet ン mm " # # m" "mm"" $ toilet ド m # # # #mm # ""m # # $ toilet コ m mmmmm """ # m" mmm# """ " $ toilet キヨシ m # mmm mmmmm ""m """"# """" # mm mmmm"#"""" mmm""# " m" "m # m" # mmm""""m "mm"" $ exit exit Script done on 2017年11月15日 18時20分16秒
シェルスクリプトなどのスクリプトの結果をまるっと記録したい場合は以下のようにする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 // 実行するシェルスクリプト $ cat zundoko.sh toilet ズン toilet ドコ // -a [ログファイル] -c [スクリプト] $ script -a zundoko.log -c ./zundoko.sh Script started, file is zundoko.log m mm# # mm """ # " # # # m" "m m" mm"" # "mm"" m # # # m mmmmm #mm """ # # ""m m" # mmm# # """ " Script done, file is zundoko.log // スクリプトの結果が出力されてる $ cat zundoko.log Script started on 2017年11月28日 11時03分39秒 m mm# # mm """ # " # # # m" "m m" mm"" # "mm"" m # # # m mmmmm #mm """ # # ""m m" # mmm# # """ " Script done on 2017年11月28日 11時03分40秒