常用功能
linux常用命令
cd /目錄名 #進入目錄
cd .. 或者 cd ~ #退出目錄
ll 或者 ls #查看目錄的文件列表
vim 文件名 或者 vi 文件名 #查看文件
ps -ef #查看進程號
netstat -ntlp #列出所有端口
kill -9 進程號 #殺死指定進程
sudo passwd root #設置root密碼
find / -name 查找的文件名 #查找
tail -f filename #實時查看文件
命令|grep 名稱 如: ps -ef|grep php #篩選
ip add #查看ip
chmod -R 777 文件名 #設置權限
chown 用戶名 文件名 #將指定用戶擁有文件的變更權限 -R 遍歷目錄下的所有文件
chgrp 用戶名 文件名 #將指定用戶擁有文件的變更權限 -R 遍歷目錄下的所有文件
alias 對應的命令 #命令別名
echo 變量名 #打印變量值,這個也可以打印文件的絕對路徑
cat 文件名 #打印文件內容
export -p #列出所有的shell賦予程序的環境變量。
export 變量名稱=變量設置值 #給環境變量設置值
常用變量
$PATH # 環境變量
服務管理者:systemctl
systemctl #查看所有進程信息
systemctl start 服務名 #開啓服務
systemctl restart 服務名 #重啓服務
systemctl reload 服務名 #服務重新加載(平滑加載,注意:並不是所有的服務都支持)
systemctl stop 服務名 #關閉服務
systemctl disable 服務名 #禁止服務開機啓動
systemctl enable 服務名 #設置服務開機啓動
systemctl status 服務名 #查看服務的狀態
添加服務給systemctl管理
/usr/lib/systemd/system/服務名.service
[Unit]
# 用於描述服務
Description=java tomcat project
# 用於描述服務類別
After=tomcat.service
[Service]
# forking是後臺運行的形式
Type=forking
# users是設置服務運行的用戶
User=users
# users是設置服務運行的用戶組
Group=users
# PIDFile爲存放PID的文件路徑,
PIDFile=/usr/local/tomcat/tomcat.pid
# ExecStart爲服務的具體運行命令
ExecStart=/usr/local/tomcat/bin/startup.sh
# ExecReload爲重啓命令
ExecReload=
# ExecStop爲停止命令
ExecStop=/usr/local/tomcat/bin/shutdown.sh
# 表示給服務分配獨立的臨時空間
PrivateTmp=true
[Install]
WantedBy=multi-user.target
用戶
/etc/group
/etc/passwd
useradd testuser #創建用戶testuser,說明:新創建的用戶會在/home下創建一個用戶目錄testuser
passwd testuser #給已創建的用戶testuser設置密碼
usermod --help #修改用戶這個命令的相關參數
userdel testuser #刪除用戶testuser
rm -rf testuser #刪除用戶testuser所在目錄
su testuser #切換用戶
問題1: This account is currently not available
修改/etc/passwd文件發現此用戶的shell是/sbin/nologin需修改成/bin/bash
環境變量
如果發現某些命令不能在任意盤符下使用,那麼就是環境變量的問題
1. 查看安裝目錄
2. 打開/etc/profile文件:輸入:vi /etc/profile
3. 在文件末尾加上:export PATH=安裝路徑/bin:$PATH
4. 查看路徑在不在環境變量中,輸入:echo $PATH
關掉ssh後進程依然運行>nohup和&的區別
temrinal
配置文件
系統級別
# 系統級別所有用戶啓動都會調用這個文件,所有這個文件配置環境變量比較合適,所以這個文件只能sudo來修改
/etc/profile
用戶級別
# 用戶級別 , 不同用戶可以配置不同用戶的特色
# 使用ssh登陸shell的時候,系統會自動的讀取 如下三個文件其中一個,按順序有前面的就不會調用後面的文件
~/.bash_profile
~/.bash_login
~/.profile
臨時級別
# 臨時級別:一般爲了當時修改配置文件,臨時加載用的
source ~/.bashrc
新增一個自動運行ssh命令的文件
# 新建一個文件夾(以下文件是我舉例用的)
vim ~/.bashrc
# 編寫編寫自動運行的命令後保存:如下
alias xxxx='ssh [email protected]'
#
# 重啓終端,如果不能生效,在配置文件加一行:
source ~/.bashrc
防火牆:SELinux
SELinux主要用於對文件(file), 文件夾 (directory), 進程(process)的限制。
- 如果爲disabled 就是已經關閉,如果enforce 就是強制的模式
查看狀態 getenforce
不重啓的關閉 setenforce 0
永久生效的關閉 vi /etc/selinux/config 把SELINUX=enforce 改成disabled就可以了
防火牆:iptables
iptables 能做到控制內部機器上網與不上網,訪問哪些網站的控制
CentOS 7.0默認使用的是firewall作爲防火牆,使用iptables必須重新設置一下
服務名:iptables.service
iptables常用命令
systemclt 沒有iptables的時候
解決方法:
systemctl stop firewalld 關閉防火牆
yum install iptables-services 安裝或更新服務
再使用systemctl enable iptables 啓動iptables
最後 systemctl start iptables 打開iptables
再執行service iptables save
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http
# 對於的命令
iptables -I INPUT -p tcp --dport 80 -j DROP
# 參數1 INPUT 或者 OUTPUT
-A #在末尾添加
-I #在指定行插入,默認是最前面
# 參數2 ip或者類型
-p # tcp | udp
-s # 設置ip
# 參數3
--dport # 端口
# 參數4
-j # ACCEPT:允許 | DROP:拒絕
# 查看幫助
iptables --help
# 查看版本,這裏返回的結果類似於 iptables-1.4.7-9.el6.i686
rpm -q iptables
# 保存設置
service iptables save
# 開啓ip段211.123.16.123/24端ip段的80口
iptables -I INPUT -p tcp --dport 80 -j DROP
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 211.123.16.123/24 -p tcp --dport 80 -j ACCEPT
# 顯示規則並顯示行數
iptables -L INPUT --line-numbers
service iptables status
# 刪除 chain 中編號爲 rulenum 的那條規則。1 表示第一條。
iptables -D chain rulenum
定時器
crond
cron是一個linux下 的定時執行工具,可以在無需人工干預的情況下運行作業。
crontab
crontab命令用於安裝、刪除或者列出用於驅動cron後臺進程的表格。用戶把需要執行的命令序列放到crontab文件中以獲得執行。
每個用戶都可以有自己的crontab文件
crontab -l #顯示當前的定時規則
crontab -r #刪除當前的crontab文件,也就刪除所有規則
crontab -e #編輯當前的定時規則
#規則舉例
#每天早上6點
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意單純echo,從屏幕上看不到任何輸出,因爲cron把任何輸出都email到root的信箱了。
#每兩個小時
0 */2 * * * echo "Have a break now." >> /tmp/test.txt
#晚上11點到早上8點之間每兩個小時和早上八點
0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt
#每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * 1-3 command line
#1月1日早上4點
0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出現錯誤,或者有數據輸出,數據作爲郵件發給這個帳號 HOME=/
#每小時執行/etc/cron.hourly內的腳本
01 * * * * root run-parts /etc/cron.hourly
#每天執行/etc/cron.daily內的腳本
02 4 * * * root run-parts /etc/cron.daily
#每星期執行/etc/cron.weekly內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly
#每月去執行/etc/cron.monthly內的腳本
42 4 1 * * root run-parts /etc/cron.monthly
#注意: "run-parts"這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是文件夾名。
#每天的下午4點、5點、6點的5 min、15 min、25 min、35 min、45 min、55 min時執行命令。
5,15,25,35,45,55 16,17,18 * * * command
#每週一,三,五的下午3:00系統進入維護狀態,重新啓動系統。
00 15 * * 1,3,5 shutdown -r +5
#每小時的10分,40分執行用戶目錄下的innd/bbslin這個指令:
10,40 * * * * innd/bbslink
#每小時的1分執行用戶目錄下的bin/account這個指令:
1 * * * * bin/account
#每天早晨三點二十分執行用戶目錄下如下所示的兩個指令(每個指令以;分隔):
20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)
#每年的一月和四月,4號到9號的3點12分和3點55分執行/bin/rm -f expire.1st這個指令,並把結果添加在mm.txt這個文件之後(mm.txt文件位於用戶自己的目錄位置)。
12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt
vim vi編輯器
- 編輯模式 --> ESC鍵 --> 命令模式
- 命令模式 --> i鍵 --> 編輯模式
常用命令
#vi 文件: 回車後就進入進入編輯模式,按 o 進行編輯
# 保存/退出
:w # 保存文件但不退出vi
:w! # 強制保存,不退出vi 編輯
:w # file 將修改另存到file中,不退出vi 編輯
:wq # 保存文件並退出vi 編輯
:wq! # 強制保存文件並退出vi 編輯
:q # 不保存文件並退出vi 編輯
:q! # 不保存文件並強制退出vi 編輯
:e! # 放棄所有修改,從上次保存文件開始在編輯
# 插入命令
:a # 在光標後附加文本
:A # 在本行行末附加文本
:i # 在光標前插入文本
:I # 在本行開始插入文本
:o # 在光標下插入新行
:O # 在光標上插入新行
# 定位命令
:h # 方向左鍵
:j # 方向下鍵
:k # 方向上鍵
:l # 方向右鍵
:$ # 移至行尾
:0 # 移至行首
:H # 移至屏幕上端
:M # 移至屏幕中端
:L # 移至屏幕下端
:set nu # 設置行號
:set nonu # 取消行號
:gg # 到第一行
:G # 到最後一行
:nG # 到第n行
:n # 到第n行
#刪除命令
:x # 刪除光標所在處字符
:nx # 刪除光標所在處後n個字符
:dd # 刪除光標所在行,ndd刪除行
:dG # 刪除光標所在行在到末尾的內容
:D # 刪除從光標所在處到行尾
:nl,n2d # 刪除指定範圍的行
# 搜索和替換命令
:/關鍵詞 # 向前搜索指定字符串,搜索是忽略大小寫 :set ic
:n # 搜索指定字符串的下一個出現位置
目錄說明
proc目錄
- /proc/version
>`系統版本`
- /proc/net/arp
>`Device:所在網絡接口`
- /proc/net/dev
>網絡設備的統計
- /proc/net/dev_mcast
>組播包統計
- /proc/net/igmp
>IGMP 分組情況
- /proc/net/netlink
>netlink套接口的信息
- /proc/net/netstat
>網絡流量的多種統計
- /proc/net/raw
>原始套接口的套接口表
- /proc/net/route
>靜態路由表
- /proc/net/rt_cache
>路由緩存表
- /proc/net/snmp
>snmp agent的ip/icmp/tcp/udp協議統計
- /proc/net/sockstat
>使用的tcp/udp/raw/pac/syc_cookies的數量
- /proc/net/tcp
>TCP連接的套接口
- /proc/net/udp
>UDP連接的套接口表
- /proc/net/unix
>UNIX域套接口的套接口表
一、進程信息
在/proc文件系統中,每一個進程都有一個相應的文件 。下面是/proc目錄下的一些重要文件 :
/proc/pid/cmdline 包含了用於開始進程的命令 ;
/proc/pid/cwd包含了當前進程工作目錄的一個鏈接 ;
/proc/pid/environ 包含了可用進程環境變量的列表 ;
/proc/pid/exe 包含了正在進程中運行的程序鏈接;
/proc/pid/fd/ 這個目錄包含了進程打開的每一個文件的鏈接;
/proc/pid/mem 包含了進程在內存中的內容;
/proc/pid/stat包含了進程的狀態信息;
/proc/pid/statm 包含了進程的內存使用信息。
linux軟件
ssh
生成公鑰/私鑰
ssh-keygen
查看公鑰
cat ~/.ssh/id_rsa.pub
服務端添加公鑰
# 將生成的公鑰複製進去
vim ~/.ssh/authorized_keys
# 或者 例子:ssh-copy-id [email protected]
ssh-copy-id [user]@[host name|ip]
配置文件
# 修改 /etc/ssh/sshd_config
StrictModes no
使用
ssh -oProxyCommand=“nc -x 127.0.0.1:3000 %h %p” -i ~/.ssh/github [email protected]
ssh -oProxyCommand=“nc -x 127.0.0.1:12333 %h %p” [email protected]
ssh [email protected]
https://www.cnblogs.com/kelvinWang/p/5612907.html
https://blog.csdn.net/a1282379904/article/details/52680959