標籤:

「Linux」 - 基本操作

一、Linux概述

Linux五大支柱,UNIX操作系統、MINIX操作系統、GNU計劃、POSIX標準、Internet。

1.UNIX來自Bell Lab的Ken Thompson,後經C語言之父Dennis Ritchie在V6版本用C語言改寫,使得UNIX更容易學習和推廣。

2.GNU計劃(GNUs Not UNIX)是自由軟體基金會創始人Richard Stallman在1984年創辦,目標是為了開發一個類似UNIX並且為自由軟體的操作系統以及系統上的工具鏈。

3.POSIX標準(Portable Operating System Interface),由IEEE定製的一組標準,描述了操作系統和調用服務介面,用於保證編製的應用程序可以在源代碼一級上在多種操作系統上移植和運行。

Linux由芬蘭的Linus Torvalds在赫爾辛基大學

學習時編寫,Linux操作系統是UNIX操作系統的克隆,使用C語言編寫操作系內核。

最新的Linux內核版本在The Linux Kernel Archives上提供下載。

二、Linux目錄結構

Linux沒有盤符概念,只有根目錄,/

經由根目錄組織出目錄樹,可以使用tree命令查看目錄樹;在根目錄下,有很多特定功能的子目錄。

/bin 系統可執行程序(命令) - 為PATH路徑之一
/boot 內核和啟動程序、所有和啟動相關的文件
/dev device設備文件目錄 - Linux中一切設備皆文件
/etc 系統配置文件目錄,同時包含一些列shell腳本
/etc/crontab ,定義自動化任務運行時間
/etc/passwd ,用戶賬戶列表
/home 用戶主目錄,普通用戶只能在屬於自己的主目錄創建文件
/lib 存放系統庫文件,動態庫、靜態庫
/media 媒體設備、光碟機、u盤、移動硬碟
/mnt 一般為空目錄 - 掛載目錄、u盤、網路路徑、鏡像
/opt 可選軟體、應用軟體、商業軟體
/proc 內存映射,訪問該目錄可以獲取系統信息、該目錄內容不在硬碟而是在內存里,將內核映射至文件
/sbin 超級管理員系統目錄,更為「重要」的二進位文件
/sys udev用到的設備目錄樹,反映機器當前所接設備
/tmp 臨時文件夾目錄
/var 相對其他目錄,該目錄為動態的,日誌(寫入)、資料庫文件(增刪改)都放在此目錄下
/usr 最為龐大的目錄,應用程序和文件幾乎都在此目錄下
/usr/bin 可執行程序(相較/bin和/sbin,提供更多命令)
/usr/include 頭文件
/usr/lib 庫文件
/usr/local 包含用戶程序等,下設類似/根目錄的目錄樹,用於管理用戶安裝的軟體
/usr/share 軟體

三、shell基本操作

雖然Linux有完善的GUI(GNOME、KDE),甚至發展出具有Touch功能的Android操作系統,但是CUI依然是Linux的哲學。

Linux kernel只是操作系統內核,提供對硬體的管理,但是為了更好的使用操作系統本身,操作系統會提供很多內置程序以及第三方程序,通過shell對程序/命令進行調用;shell稱為命令解釋器,根據輸入的命令執行響應程序/命令。

通過cat /etc/shells,可以查看當前系統所支持的shell,通過echo $SHELL可以查看當前系統的默認shell。

A、常見shell

  • sh - UNIX標準shell
  • bash - Linux標準shell,增強版的sh,GNU計劃產物
  • ksh - AT&T Bell Lab發展而來,兼容bash
  • zsh - 基於ksh發展而來,功能更強大的shell
  • csh - 被tcsh取代
  • tcsh - 整合C shell,提供更多的功能

Linux默認shell為bash,可以通過chsh -s /bin/zsh,修改默認shell。

B、shell常用操作

  • tab - 命令補齊,路徑補齊
  • 上鍵 - 之前執行過的命令,ctrl+p,prev
  • 下鍵 - 之後執行過的命令,ctrl+n,next
  • 左鍵 - 游標向左(前)移動,ctrl+b,backward
  • 右鍵 - 游標向右(後)移動,ctrl+f,forward
  • backspace - 刪除游標前面的字元,ctrl+h
  • del - 刪除游標後面的字元,ctrl+d,delete
  • home - 將游標移動到起始,ctrl+a,the first letter
  • end - 將游標移動到結束,ctrl+e,end

C、zsh-shell設置(OP)

# 查看系統shell
cat /etc/shells

# 安裝zsh
yum install zsh

# 切換默認shell為zsh
chsh -s /bin/zsh

# 查看默認shell
echo $SHELL

# oh-my-zsh安裝
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

# 導出.zshrc配置
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

# 修改zshrc配置
vim ~/.zshrc

export ZSH=$HOME/.oh-my-zsh
export PATH=$HOME/bin:/usr/local/bin:$PATH
export LANG=zh_CN.UTF8
export TIME_STYLE=+%Y-%m-%d %H:%M:%S

ZSH_THEME="gallifrey"
DISABLE_AUTO_UPDATE="true"
plugins=(!git zsh_reload zsh_syntax-highlighting)

alias cls=clear
alias ll=ls -l
alias la=ls -a
alias vi=vim
alias grep="grep --color=auto"
alias cd..=cd ..
alias ..=cd ..
alias ...=cd ../../../
alias mkdir=mkdir -pv
alias date=date +"%Y-%m-%d %T"
alias ping=ping -c 4
alias mkcd=foo(){ mkdir -p "$1"; cd "$1" }; foo

# 在命令行直接輸入後綴為html的文件名,會在vim中打開
alias -s html=vim
alias -s py=vim
alias -s js=vim
alias -s c=vim
alias -s java=vim
alias -s txt=vim
alias -s gz=tar -vxzf
alias -s tgz=tar -vxzf
alias -s zip=unzip
alias -s bz2=tar -jvxf

# 使配置生效
source $ZSH/oh-my-zsh.sh

# 自動補全功能
setopt AUTO_LIST
setopt AUTO_MENU

四、軟體安裝

通過yum,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。

A、替換阿里雲yum源

yum repolist

# 可用國內穩定源
# http://mirrors.163.com/.help/centos.html
# https://opsx.alibaba.com/?lang=zh-cn

# 備份原鏡像文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

# 下載阿里雲repo文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

yum clean all
yum makecache

B、EPEL源

通常情況阿里源就能搞定,但是相對小眾的軟體,阿里也沒有提供,需要使用EPEL源。

wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

安裝時提示package epel-release-6-8.noarch is already installed,使用yum repolist也看不到EPEL的repo信息,在/etc/yum.repos.d目錄中只有阿里repo文件。

嘗試卸載,卸載失敗,應該是有其他源導致衝突,卸載remi後,重新安裝EPEL即可。

rpm -e epel-release-6-8.noarch
rpm -e remi-release-6.9-2.el6.remi.noarch
rpm -e epel-release-7-11.noarch

yum makecache

C、常用軟體安裝

# 不升級內核
yum update -y --exclude=kernel*

yum list installed

# 常用軟體
yum install -y man openssh-server net-tools git vim wget curl telnet tree pstree gcc g++ gdb build-essential lsof lrzsz sysstat

D、cman安裝(OP)

wget https://src.fedoraproject.org/repo/pkgs/man-pages-zh-CN/manpages-zh-1.5.1.tar.gz/13275fd039de8788b15151c896150bc4/manpages-zh-1.5.1.tar.gz

tar -xvzf manpages-zh-1.5.1.tar.gz

cd manpages-zh-1.5.1

./configure --prefix=/usr/share/zhman --disable-zhtw

make

make install

vim .bashrc
# bashrc中增加以下信息
alias cman=man -M /usr/share/zhman/share/man/zh_CN

source .bashrc

五、SSH設置

# 關閉防火牆
/etc/init.d/iptables stop

# 啟動SSH
service sshd start

# 設置開機運行
chkconfig sshd on

# 修改SSH配置
cp /etc/ssh/sshd_config sshd_config_bak
vim /etc/ssh/sshd_config
# SSH鏈接默認埠
port 36000
# #UseDNS yes -> UseDNS no
UseDNS no

/etc/init.d/sshd restart

# 通過scp拷貝文件到目標機器
scp apache-tomcat-9.0.8.tar.gz root@10.255.242.128:/var/www/

# 到目標機器拉取相關文件當前路徑
scp root@10.255.242.128:/var/www/tomcat/logs/apache-tomcat-log.tar.gz ./

六、NTP設置

測試環境伺服器時間與標準UTC+8不一致,導致SQL無法正確拉取數據,需要將伺服器時間通過NTP調整正確。

yum install -y ntp ntpdate

vim /etc/sysconfig/clock
ZONE="Asia/Shanghai"
UTC=false
ARC=false

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate cn.ntp.org.cn

# 設置硬體時間和系統時間一致並校準
/sbin/hwclock --systohc

crontab -e
*/30 * * * * ntpdate cn.ntp.org.cn

crontab -l

echo "unset MAILCHECK" >> /etc/profile
source /etc/profile

七、VIM設置

A、.vimrc文件基本設置

vim ~/.vimrc

"避免vi一致性模式
set nocompatible

"主題
"color evening

"編碼
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8,gbk
set fileformats=unix,dos,mac

"高亮
syntax on
syntax enable

"顯示行號
set number

"不發出錯誤滴滴聲
set noerrorbells

"高亮顯示匹配的括弧
set showmatch

"游標所在行顯示下劃線
set cursorline

"命令行顯示當前輸入的命令
set showcmd

"命令行高度
set cmdheight=1

"統一縮進
set tabstop=4
set softtabstop=4
set shiftwidth=4

"C方式縮進
set cindent

"高亮搜索結果
set hlsearch

"搜索忽略大小寫
set ignorecase

"開啟滑鼠
set mouse=a

"自動縮進
set autoindent

"自動保存
set autowrite

"禁止備份文件
set nobackup

"vim與win共用剪貼板
set clipboard=unnamed

B、vim功能

i - insert模式
esc - normal模式
dd - 剪切當前行
yy - 拷貝當前行
p - 粘貼
gg - 文件頭
G - 文件尾
0 - 行首
$ - 行末
w - 下一個單詞的開頭
b - 上一個單詞的開頭
o - 在當前行後插入新行
O - 在當前行前插入新行
u - 還原
~ - 大小寫轉換
/pattern - 搜索(n下一個,N上一個)
# - 游標匹配的單詞

:wq - 寫入退出
:x - 寫入退出
ZZ - 寫入退出

:pwd - 查看當前文件目錄
:E - 瀏覽目錄(可以上下切換,文件選定)

八、MOTD設置

測試環境機器資源比較緊張,登錄上伺服器後,都要查看下機器信息,不如ssh登錄後直接顯示。

A、登錄設置

vim /etc/ssh/sshd_config
PrintMotd no

vim /etc/pam.d/login
# session optional pam_motd.so

vim /etc/profile
# Place at the bottom
/usr/local/bin/dynmotd

vim /usr/local/bin/dynmotd
# 填入以下腳本

chmod 755 /usr/local/bin/dynmotd

B、登錄內容

# System load
LOAD1=`cat /proc/loadavg | awk {print $1}`
LOAD5=`cat /proc/loadavg | awk {print $2}`
LOAD15=`cat /proc/loadavg | awk {print $3}`

MEMORY=`free -mh | grep "Mem" | awk {print "used:",$3,"/",$2,"( free: ",$4,")"}`
MEM_USAGE=`free -m | grep "Mem" | awk {printf("%3.1f%%", (($3/$2)*100))}`
DISK=`df -Ph / | awk /// {print "used:",$3,"/",$2," ( free:",$4,")"}`
DISK_USAGE=`df -h / | awk /// {print $5}|grep -v "^$"`

echo "
===========================================================================
- Release.............: `cat /etc/redhat-release`
- Kernel..............: `uname -r`
- Hostname............: `uname -n`
- Username............: `whoami`
- IP..................: `hostname -I`
- Login Users.........: Total `users | wc -w` user(s)
===========================================================================
- CPU usage...........: $LOAD1 - $LOAD5 - $LOAD15 (1-5-15 min)
- Memory..............: $MEMORY
- Memory usage........: $MEM_USAGE
===========================================================================
- Mem info:
`free -mh`

- Disk info:
`df -h`

- Net info:
`netstat -ntpl`
===========================================================================
"

C、登錄效果

九、壓縮文件

# tar.gz格式
* 壓縮:tar -zcvf FileName.tar.gz DirName
* 解壓:tar -zxvf FileName.tar.gz

# zip格式
* 壓縮:zip -r FileName.zip DirName
* 解壓:unzip FileName.zip

# tar.bz2格式
* 壓縮:tar -jcvf FileName.tar.bz2 DirName
* 解壓:tar -jxvf FileName.tar.bz2

# tar格式(tar是打包,不是壓縮)
* 壓縮:tar -cvf FileName.tar DirName
* 解壓:tar -xvf FileName.tar

十、修改主機名(OP)

hostname isisiwish

vim /etc/hostname

vim /etc/hosts
127.0.0.1 localhost isisiwish
::1 localhost isisiwish

vim /etc/sysconfig/network
HOSTNAME=isisiwish

十一、安全相關設置

# 關閉SELinux
vim /etc/selinux/config
SELINUX=disabled
#SELINUXTYPE=targeted

setenforce 0

# 關閉iptables
iptables -F
iptables -L

/etc/init.d/iptables save
service iptables stop

十二、bash設置

vim ~/.bashrc

export PS1=[D{%H:%M:%S}][u@w]$
export LANG=zh_CN.UTF8
export TIME_STYLE=+%Y-%m-%d %H:%M:%S


參考:

topsimages.com/images/u

segmentfault.com/a/1190

SSH原理與運用(一):遠程登錄 - 阮一峰的網路日誌

SSH原理與運用(二):遠程操作與埠轉發 - 阮一峰的網路日誌

Linux伺服器安全配置之SSH - B1ueW01f

gist.github.com/cha55so


推薦閱讀:

TAG:Linux |