20191020のLinuxに関する記事は5件です。

新しく作ったユーザでタブ補完やコマンドの履歴が使えない場合

はじめに

これは、Linux初心者の私が、少し悩んでしまったことをメモとして記録したものですので、寛大な心でお読みください。

症状

・Ubuntu19.04にて、新しく作ったユーザで
  ・タブキーでコマンドの補完ができない
  ・矢印キーでコマンドの履歴を見れない
  ・シェルがモノクロ
 などの症状がでる。

原因

・それはbashではなく、shのシェルです。

解決策

・ようは、使用するシェルを変更すれば良いため、
  ・chshコマンドで使用するシェルを変更
  ・/etc/passwdのファイルから、変更するユーザの行のシェルを書き換える
 などの方法がある。お好みで。

※chshコマンドでbashに変更した場合

$ chsh
パスワード: 
Changing the login shell for 〇〇〇(ユーザ名)
Enter the new value, or press ENTER for the default
        Login Shell [/bin/sh]: /bin/bash (← 入力)

そして、再接続か、bashコマンドでbashが起動する。
もし、bash以外を使用している方はbashのところを変更してください。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【画像あり】CentOS 8インストール後に再起動しても初期画面に戻る問題

(戒めも兼ねて)備忘録目的です。

背景&問題

MacでLinuxを触れてみようとVirtualBox → CentOS8をインストールしようとしたところ、何度インストールしても何事も無かったかのように初期画面に戻る問題が発生。
「公開されたばかりのCatalinaの互換性?それともセキュリティソフトの設定?あるいはダウンロード中に何かしらファイル破損、もしくは...」と1日半ほど勝手に迷走しておりました。

環境

・ VirtualBox: 6.0.14 r133895
・ ホストOS: MacOS Catalina 10.15
・ ゲストOS: CentOS 8.0.1905

原因&解決

起動時のブートメディアのHDD優先順位が光学より下だったことが原因でした(※画像は修正したもの)。
ブートローダがインストールしたCentOSを再起動で選ぶのにHDDが後だと初期の画面(でもインストールで容量は埋まってる)になっていた模様。
スクリーンショット 2019-10-20 18.10.45.png

その他

非エンジニアで学習のため、表現ミス等あればどうぞご指摘ください?‍♂️

参考にさせて頂いたURL

https://teratail.com/questions/217845
http://park12.wakwak.com/~eslab/pcmemo/boot/boot3.html
https://wa3.i-3-i.info/word15558.html

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac,Windows,Linux(Raspberry pi)で共通のファイルシステムでファイルをやりとりする(NTFS)

なぜやるのか

Mac,Windows,Linux(Raspberry pi)で共通マウントできる記録デバイスが欲しい。

これまでにやったこと

最初はMac-Raspberry pi(以降ラズパイ)間でやりとりできれば良いということでMacにfuse-xfsとか入れましたが、うまくフォーマットできず断念。
ラズパイ側でxfsフォーマットしてもなぜかMac側でマウントできなかった。
Mac側ではフォーマットができなかった。。。

やったこと

ラズパイにUSBでHDDをつないで

root@raspberrypi:~# parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt                                                      
(parted) mkpart                                                           
Partition name?  []? primary                                              
File system type?  [ext2]? ntfs                                           
Start? 0                                                                  
End? -0                                                                   
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? Ignore                                                     
(parted) p                                                                
Model: Jmicron Corp. (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name     Flags
 1      17.4kB  500GB  500GB  ntfs         primary

(parted) q

root@raspberrypi:~# mkfs.ntfs -f /dev/sda1

でNTFS作成

Mac側ではntfs-3gをインスコして

sudo su -
ntfs-3g /dev/disk2s1 /mnt/ -olocal -oallow_other

/mntにread/writeでマウントできました。
Macでsudo cp hogehoge /mnt/とファイルコピーした際に

~ Operation not supported on socket

とか出たけど書き込んだファイルの中身をラズパイ側で確認&書き込み出来たので気にしない。
※Winで読み書きできるかはまだ未検証(2019/10/20現在)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ruby on Railsにスタイルを反映させる手順

概要

Webアプリのscssファイルを更新しても本番環境に変更が反映されませんでした。
httpdリスタートしたりpassengerをリスタートしたりしま
したが変わらず。。。

解決方法

何が問題なのかと調べた結果、こちらを参考にしました。

環境

ruby 2.3.3
rails 5.1.7
SAKURA VPS
CentOS 6

手順

$ rm -rf public/assets
$ rm -rf tmp/cache
$ bundle exec rake assets:precompile
$ sudo service httpd restart 

1,2行目:実行するプロジェクトのassets,cacheフォルダを削除
3行目:プリコンパイルを行う
4行目:httpdをリスタート

以上の流れで、変更したscssファイルが反映されました。
私としては、アプリで利用するファイルの一部が残っていたので削除してもう一度作り直す、という理解になっています。

何か違う!というのがあれば教えてください!!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

bashスクリプトの最初の方に書いておくと少しだけ安心できる数行のコード

テストを完走したスクリプトが本番環境で動かない!などの不安を和らげる数行のコードで、個人的によく使う 3つを紹介します。

1. 環境変数 $PATH

systemd から実行したら動かないなどの問題が起きないように、環境変数$PATHの値を最初に整えます。スクリプト内で各コマンドをフルパスで書くより、環境変数をテスト環境と同じにした方が安心です。

for _path in $(echo "/usr/local/sbin:/usr/local/bin:/usr/sbin:/opt/myapp" | tr ':' '\n'); do
  echo ${PATH} | tr ':' '\n' | grep -q "^${_path}$" || PATH+=":${_path}"
done

現在の$PATHに含まれないパスが"/usr/local/sbin:/usr/local/bin:/usr/sbin:/opt/myapp"の中にあれば$PATHに追加されます。区切り文字の:を改行に置換して各パスを行に区切ることでgrepでの比較をしやすくしています。
(重複やべき等を気にしなければ、単にPATH+=で追加すればいいだけですが)

2. 多重起動防止

ファイルなどのリソースを操作するスクリプトで安心できるようになります。

(( $$ == $(pgrep -fo "$0") )) || exit 1

「同じコマンドライン文字列で実行された最も古いプロセス」が現在のプロセスなら通過、違っていたら多重起動と判定して異常終了します。実行時のコマンドライン文字列がいつも同じであることが条件になります。

3. 終了処理

trapで指定した関数on_exit()が終了時に実行されます。とりあえず書いておけば、スクリプト作成中に思いついた終了処理をすぐに追加できます。

function on_exit() {
  # $1: exit code
}

trap 'on_exit $?' EXIT

スクリプト内では、エラーで終了したいコマンドや関数の呼び出しをsomecommand || exit $?のように書きます。

関数on_exit()では終了コードの値を見て、正常終了時/異常終了時/共通の処理をそれぞれ記述することができます。

function on_exit() {
  if (($1 == 0)); then
    echo "Completed."
  else
    echo "Failed ($1)." >&2
  fi
  echo "Bye."
}

+1.

sh が bash にリンクされているかどうかに関係なく、使用するシェルは明示的に宣言します。

#!/bin/bash

参考リンク

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む