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沒有盤符概念,只有根目錄,/。
經由根目錄組織出目錄樹,可以使用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 軟體
雖然Linux有完善的GUI(GNOME、KDE),甚至發展出具有Touch功能的Android操作系統,但是CUI依然是Linux的哲學。
Linux kernel只是操作系統內核,提供對硬體的管理,但是為了更好的使用操作系統本身,操作系統會提供很多內置程序以及第三方程序,通過shell對程序/命令進行調用;shell稱為命令解釋器,根據輸入的命令執行響應程序/命令。
通過cat /etc/shells,可以查看當前系統所支持的shell,通過echo $SHELL可以查看當前系統的默認shell。
Linux默認shell為bash,可以通過chsh -s /bin/zsh,修改默認shell。
# 查看系統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,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
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
通常情況阿里源就能搞定,但是相對小眾的軟體,阿里也沒有提供,需要使用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
# 不升級內核 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
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
# 關閉防火牆 /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 ./
測試環境伺服器時間與標準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 ~/.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
i - insert模式 esc - normal模式 dd - 剪切當前行 yy - 拷貝當前行 p - 粘貼 gg - 文件頭 G - 文件尾 0 - 行首 $ - 行末 w - 下一個單詞的開頭 b - 上一個單詞的開頭 o - 在當前行後插入新行 O - 在當前行前插入新行 u - 還原 ~ - 大小寫轉換 /pattern - 搜索(n下一個,N上一個) # - 游標匹配的單詞
:wq - 寫入退出 - 寫入退出 ZZ - 寫入退出
:pwd - 查看當前文件目錄 :E - 瀏覽目錄(可以上下切換,文件選定)
測試環境機器資源比較緊張,登錄上伺服器後,都要查看下機器信息,不如ssh登錄後直接顯示。
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
# 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` =========================================================================== "
# 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
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
vim ~/.bashrc
export PS1=[D{%H:%M:%S}][u@w]$ export LANG=zh_CN.UTF8 export TIME_STYLE=+%Y-%m-%d %H:%M:%S
參考:
https://www.topsimages.com/images/unix-tree-f5.html
https://segmentfault.com/a/1190000005902945
SSH原理與運用(一):遠程登錄 - 阮一峰的網路日誌
SSH原理與運用(二):遠程操作與埠轉發 - 阮一峰的網路日誌
Linux伺服器安全配置之SSH - B1ueW01f
https://gist.github.com/cha55son/6042560
TAG:Linux |