s5-6 Linux 標準輸出 系統優化 目錄結構

標準輸出

重定向符號linux

#>   1>    標準輸出重定向  先把文件的內容清空   把內容放在文件的最後一行
#>>  1>>   追加劇定向      把內容放在文件的最後一行

1 標準輸出 執行正確的內容纔會經過漏斗

2>        標準錯誤重定向
2>>       錯誤追加劇定向

[root@lewen ~]# eho hello 2>>/data/lewen.txt
[root@lewen ~]# cat /data/lewen.txt
hello lewen
錯誤
-bash: eho: command not found
[root@lewen ~]# eho hello 2>>/data/lewen.txt
[root@lewen ~]# cat /data/lewen.txt
hello lewen
錯誤
-bash: eho: command not found
-bash: eho: command not found

eho hello >>/data/lewen.txt  2>>/data/lewen.txt
eho hello >>/data/lewen.txt  2>&1
                              把錯誤的信息放入到對的信息中 對的錯誤在一塊兒

<     輸入重定向
echo 1 2 3 4 5 >/data/num.txt
[root@lewen ~]# cat /data/num.txt
1 2 3 4 5
[root@lewen ~]# xargs -n2 </data/num.txt
1 2
3 4
5

<<    追加輸入重定向
cat >>/data/lewen.txt<<EOF
I
am
studying
linux
EOF

find命令

[root@lewen tmp]# find /root/ -type f -name "lewen.txt"
/root/data/lewen.txt
[root@lewen tmp]# #find /root/ -type f -name "lewen.txt"
[root@lewen tmp]# #find 在哪裏找 找什麼類型的  找什麼名字

-type  找什麼類型的
       f file 文件
       d directory 目錄

管道 |

[root@lewen tmp]# find /root/ -type f -name "lewen.txt"
/root/data/lewen.txt
[root@lewen tmp]#
[root@lewen tmp]#
[root@lewen tmp]# find /root/ -type f -name "lewen.txt"|xargs ls -l
-rw-r--r--. 1 root root 0 Sep 20 02:27 /root/data/lewen.txt

找出以.txt結尾的文件
[root@lewen tmp]# find /root/  -type f  -name "*.txt"
/root/data/lewen.txt
/root/data/num.txt

 

  • 已知文件test.txt內容vim

lewen
test
lidao
請給出輸出test.txt文件內容時,不包含lewen字符串的命令。windows

建立測試文件:
mkdir /data
cat >/data/test.txt<<EOF
test
liyao
lewen
EOF

#方法1-grep
[root@lewen ~]# cd /data/
[root@lewen data]# cat test.txt
test
liyao
lewen
[root@lewen data]# grep -v   "lewen"      test.txt
test
liyao

#方法2-head
[root@lewen data]# head test.txt
test
liyao
lewen
[root@lewen data]# head -n2 test.txt
test
liyao
[root@lewen data]# head -2 test.txt
test
liyao

[root@lewen data]# tail test.txt
test
liyao
lewen
[root@lewen data]# tail -2 test.txt
liyao
lewen
[root@lewen data]# tail -1 test.txt
lewen

#方法3-awk
[root@lewen data]# awk '/lewen/' test.txt
lewen
[root@lewen data]# grep "lewen" test.txt
lewen
[root@lewen data]# grep -v "lewen" test.txt
test
liyao
[root@lewen data]# awk '!/lewen/' test.txt
test
liyao
[root@lewen data]# #awk中 !表示取反 非

#方法4-sed
[root@lewen data]# sed '/lewen/d' test.txt
test
liyao

小結:
1.grep 過濾 ******
2.head tail ******
3.sed awk 瞭解

 

  •  已知/tmp下已經存在test.txt文件,如何執行命令才能把/mnt/test.txt拷貝到/tmp下覆蓋掉/tmp/test.txt,而讓系統不提示是否覆蓋(root權限下)。
[root@lewen data]# cp /mnt/test.txt  /tmp/
cp: overwrite `/tmp/test.txt'? ^C
#方法1 撬棍
[root@lewen data]# \cp /mnt/test.txt  /tmp/

#方法2 使用命令的絕對路徑 全路徑

[root@lewen data]# which cp
alias cp='cp -i'
    /bin/cp
[root@lewen data]# which mkdir
/bin/mkdir

[root@lewen data]# ls -l /bin/cp
-rwxr-xr-x. 1 root root 122896 Mar 23  2017 /bin/cp
[root@lewen data]# /bin/cp /mnt/test.txt /tmp/

#提示你是否覆蓋?   是否刪除?

#爲什麼咱們執行cp的時候就至關於cp -i
#爲什麼咱們執行rm的時候就至關於rm -i


###linux別名
##小名 暱稱 愛稱 外號

##目標
###1.防止運行危險命令******
###2.省事 簡化命令

##如何設置一個別名

###第一個里程碑-查看系統中的別名

[root@lewen data]# alias rm cp mv
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
###第二個里程碑-模仿
#執行rm命令的時候提示 do not use rm
root@lewen data]# echo do not use rm
do not use rm
[root@lewen data]# alias rm='echo do not use rm'
[root@lewen data]# alias rm
alias rm='echo do not use rm'
[root@lewen data]# rm /tmp/test.txt
do not use rm /tmp/test.txt
[root@lewen data]# rm -f /tmp/test.txt
do not use rm -f /tmp/test.txt
[root@lewen data]# rm -fr /tmp/test.txt
do not use rm -fr /tmp/test.txt
###第三個里程碑-永久生效
#/etc/profile
#vim 快捷鍵
##移動光標到文件的最後一行                             G
##移動光標到文件的  第一行                             gg
##在光標所在位置的下一行插入一個空行 並進入編輯模式    o(小寫字母)
[root@lewen ~]# tail -1 /etc/profile
alias rm='echo do not use rm'

[root@lewen ~]# source /etc/profile
[root@lewen ~]# alias rm
alias rm='echo do not use rm'

#第四個里程碑-填坑
編輯 /root/.bashrc
把 alias rm='rm -i'這一行前面加上一個註釋#

小結:
1.配置別名
2.臨時取消別名 cp rm
View Code

 

  • 只查看ett.txt文件(共100行)內第20到第30行的內容
seq 100 >/lewen/ett.txt
 
[root@lewen ~]# #sed 默認輸出 sed命令會把文件的內容 默認都顯示出來
[root@lewen ~]# sed -n '20p' /lewen/ett.txt
20
[root@lewen ~]# sed -n '20,30p' /lewen/ett.txt
20
21
22
23
24
25
26
27
28
29
30
方法1-sed
 
[root@lewen ~]# head -30 /lewen/ett.txt |tail -11
20
21
22
23
24
25
26
27
28
29
30
方法2-head + tail

 

#方法3-awk
[root@lewen ~]# awk 'NR==20' /lewen/ett.txt
20
#NR表示行號
#== 表示等於
[root@lewen ~]# awk 'NR==20,NR==30' /lewen/ett.txt
[root@lewen ~]# sed -n '20,30p' /lewen/ett.txt

#方法4-grep
[root@lewen ~]# grep "20" /lewen/ett.txt
20
[root@lewen ~]# #文件的內容 ====等於這一行的行號
[root@lewen ~]# grep -A10 "20" /lewen/ett.txt
20
21
22
23
24
25
26
27
28
29
30

小結:
1.取出文件中的某一行,或者連續的幾行
2.sed,head+tail
3.awk-瞭解
View Code

 

  •  把/lewen目錄及其子目錄下全部以擴展名 .sh結尾的文件中,文件包含lewen的字符串所有替換爲oldgirl
建立測試環境:
mkdir -p /lewen/test
cd /lewen
echo "lewen">test/del.sh
echo "lewen">test.sh
echo "lewen">t.sh
touch lewen.txt
touch alex.txt

#第一個里程碑-找出你要的文件
[root@lewen lewen]# find /lewen/ -type f
/lewen/t.sh
/lewen/lewen.txt
/lewen/test.sh
/lewen/test/del.sh
/lewen/ett.txt
/lewen/alex.txt
[root@lewen lewen]# find /lewen/ -type f -name "*.sh"
/lewen/t.sh
/lewen/test.sh
/lewen/test/del.sh

#第二個里程碑-lewen替換爲oldgirl 處理一個文件
[root@lewen lewen]# cat /lewen/t.sh
lewen
[root@lewen lewen]# #sed 's#找誰#替換爲何#g'   /lewen/t.sh
[root@lewen lewen]# #替換
[root@lewen lewen]# sed  's#lewen#oldgirl#g'   /lewen/t.sh
oldgirl
[root@lewen lewen]# cat /lewen/t.sh
lewen
[root@lewen lewen]# #sed修改文件的內容
[root@lewen lewen]# sed -i 's#lewen#oldgirl#g'   /lewen/t.sh 
[root@lewen lewen]# cat /lewen/t.sh
oldgirl

#第三個里程碑-把find命令找到的文件交給sed命令處理
[root@lewen lewen]# find /lewen/ -type f -name "*.sh"
/lewen/t.sh
/lewen/test.sh
/lewen/test/del.sh
[root@lewen lewen]# find /lewen/ -type f -name "*.sh"|xargs ls -l
-rw-r--r--. 1 root root 7 Sep 25 11:59 /lewen/test/del.sh
-rw-r--r--. 1 root root 7 Sep 25 11:59 /lewen/test.sh
-rw-r--r--. 1 root root 8 Sep 25 12:08 /lewen/t.sh
[root@lewen lewen]# find /lewen/ -type f -name "*.sh"|xargs sed 's#lewen#oldgirl#g'
oldgirl
oldgirl
oldgirl
[root@lewen lewen]# find /lewen/ -type f -name "*.sh"|xargs sed 's#lewen#oldgirl#g' -i
[root@lewen lewen]# find /lewen/ -type f -name "*.sh"|xargs cat
oldgirl
oldgirl
oldgirl

小結:
1.find 與|xargs
2.ls -l rm sed
3.sed名進行替換 修改文件內容
View Code

1.find 與|xargs
2.ls -l rm sed
3.sed名進⾏替換 修改⽂件內容安全



s5-Linux系統優化

#添加用戶
linux用戶分類
1.root 用戶 linux皇帝
2.普通用戶  貧民百姓
[root@lewen lewen]# useradd   lewen
[root@lewen lewen]# id  lewen
uid=500(lewen) gid=500(lewen) groups=500(lewen)
[root@lewen lewen]# id lilaoshi
id: lilaoshi: No such user
[root@lewen lewen]# passwd    lewen
Changing password for user lewen.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

 #切換用戶
[root@lewen lewen]# whoami
root
[root@lewen lewen]# su  -  lewen
[lewen@lewen ~]$ whoami
lewen

#切換回root
[lewen@lewen ~]$ su - root
Password:
#退出當前用戶 註銷
[lewen@lewen ~]$ #ctrl + d
[lewen@lewen ~]$ logout

課後題目:
#su 與su -區別
View Code

 

查看系統什麼版本的?
[root@lewen ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@lewen ~]# uname -r
2.6.32-696.el6.x86_64
[root@lewen ~]# uname -m
x86_64

 

#PS1 系統環境變量
##通常都是大寫的,在系統中任何的地方均可以使用。
[root@lewen
~]# echo $PS1 [\u@\h \W]\$ [root@lewen ~]# #\u=====當前用戶名 whoami [root@lewen ~]# #\h 當前主機名 hostname [root@lewen ~]# #\W 當前的位置 pwd [root@lewen ~]# PS1='[\u@\h \W \t]\$'

SElinux關閉
#臨時關閉-重啓服務器失效
[root@lewen ~]# #查詢selinux狀態
[root@lewen ~]# getenforce
Enforcing
[root@lewen ~]# #enforcing   selinux正在運行
[root@lewen ~]# #permissive  selinux臨時關閉 仍是提示警告
[root@lewen ~]# #disabled    selinux完全關閉
[root@lewen ~]# setenforce
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
[root@lewen ~]# setenforce 0
[root@lewen ~]# getenforce
Permissive

#永久關閉-重啓服務器生效
 vim /etc/selinux/config

[root@lewen ~]# grep "=disabled" /etc/selinux/config
SELINUX=disabled
[root@lewen ~]# grep "disabled" /etc/selinux/config
#     disabled - No SELinux policy is loaded.
SELINUX=disabled

小結:
1.臨時關閉-setenforce
2.永久關閉-修改配置文件
View Code

 

關閉Iptables
#服務器對外使用,有外網,開啓防火牆
#服務器內網,            關閉

#關閉防火牆

#臨時關閉
#查詢防火牆是否在運行
/etc/init.d/iptables  status

[root@lewen ~]# /etc/init.d/iptables  stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@lewen ~]# /etc/init.d/iptables  stop
[root@lewen ~]# /etc/init.d/iptables  status
iptables: Firewall is not running.


#永久關閉
開機自動啓動
#讓iptables在開機的時候 不自動啓動
chkconfig

[root@lewen ~]# chkconfig |grep ipt
iptables           0:off    1:off    2:on    3:on    4:on    5:on    6:off
[root@lewen ~]# chkconfig iptables off
[root@lewen ~]# chkconfig |grep ipt
iptables           0:off    1:off    2:off    3:off    4:off    5:off    6:off


小結:
1.臨時關閉 xxxx stop
2.永久   chkconfig  xx  off
View Code

 

#顯示中文亂碼
1.什麼是字符集?
##表示字符 文字的方法
UTF-8 萬國碼 系統默認的字符集
GBK GB2312

2.如何查看系統的字符集
[root@lewen ~]# echo $LANG
en_US.UTF-8
[root@lewen ~]# #語言.字符集

3.如何修改字符集-臨時
[root@lewen ~]# export LANG=zh_CN.UTF-8
[root@lewen ~]# echo $LANG
zh_CN.UTF-8

4.如何修改字符集-永久
[root@lewen ~]# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

5.生效
[root@lewen ~]# source /etc/sysconfig/i18n
[root@lewen ~]# echo $LANG
en_US.UTF-8

#1.查看中文亂碼的緣由******
1)linux使用的字符集
2)遠程鏈接工具使用的字符集
1) 與 2) 不一樣 就會致使亂碼

#2.排查
1)linux使用的字符集
2)遠程鏈接工具使用的字符集

#3.解決
方法1 修改遠程鏈接工具字符集
方法2 修改linux系統的字符集
1.如何修改字符集-臨時
2.如何修改字符集-永久
3.生效
 
 

s6-Linux目錄結構特色

一切從根開始
磁盤/設備/分區沒有掛載 沒法使用

舉例-linux下面使用光盤
#1.把光盤放入到光驅中
#2.linux中使用光盤 /dev/cdrom
[root@lewen ~]# ll /dev/cdrom
lrwxrwxrwx. 1 root root 3 Sep 25 10:01 /dev/cdrom -> sr0
[root@lewen ~]# cd /dev/cdrom
-bash: cd: /dev/cdrom: Not a directory
[root@lewen ~]# cat /dev/cdrom

###3.把光盤掛載到系統裏面
[root@lewen ~]# mount /dev/cdrom  /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@lewen ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.8G  1.4G  7.0G  17% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/sda1       190M   40M  141M  22% /boot
/dev/sr0        3.7G  3.7G     0 100% /mnt

小結:
1.一切從根開始,一切皆文件
2.linux設備(光盤/磁盤分區)不掛載沒法使用
3.掛載至關於給磁盤分區/設備 開了一個入口 經過入口進入到光盤/磁盤分區中
4.入口-掛載點-目錄

 

 

/etc/sysconfig/network-scripts/ifcfg-eth0
#網卡的配置文件
DEVICE=eth0                                ###網卡的名字
HWADDR=00:0c:29:1e:67:61                   #@@hardware address硬件地址 MAC地址
TYPE=Ethernet                              ###互聯網 
UUID=3405d22b-1aab-45a5-b57f-c0d005e4f269  ###UUID 系統中惟一的標識
ONBOOT=yes                                 #@@booton 在重啓的時候是否開啓網卡(自動運行)
NM_CONTROLLED=yes                          ###是否能被network軟件進行管理
BOOTPROTO=none                             #@@網卡獲取ip地址的方式
#none/static ip地址是固定的
#dhcp        自動獲取ip地址
IPADDR=10.0.0.200                          #@@ ip address ip地址
NETMASK=255.255.255.0                      ### 子網掩碼
GATEWAY=10.0.0.2                           #@@ 網關 默認的出口
USERCTL=no                                 ###是否准許普通用戶管理網卡 開 關 重啓
PEERDNS=yes                                ###
DNS1=223.5.5.5                             #@@
DNS2=223.6.6.6                               #@@


#上網使用 www.baidu.com jd.com  taobao.com 域名
##把使用的域名轉換爲ip地址 ----DNS作   域名解析服務/系統

###阿里雲的DNS
#223.5.5.5
#223.6.6.6

#114
#114.114.114.114
#114.114.115.115

#谷歌
#8.8.8.8
View Code

 


#如何修改DNS
#1.在網卡配置文件中添加上
DNS1=223.5.5.5
DNS2=223.6.6.6

[root@lewen ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0c:29:1e:67:61
TYPE=Ethernet
UUID=3405d22b-1aab-45a5-b57f-c0d005e4f269
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=10.0.0.200
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
USERCTL=no
PEERDNS=yes
IPV6INIT=no
DNS1=223.5.5.5
DNS2=223.6.6.6
View Code

 

#網卡的配置生效-重啓網卡
重啓某一個網卡
ifdown eth0 && ifup eth0
重啓全部網卡
/etc/init.d/network restart
 
/etc/resolv.conf
配置DNS。
網卡配置文件裏面的DNS優先於 /etc/resolv.conf
配置DNS都在網卡里面配置

/etc/hosts  ip地址與域名解析關係  對主機名進行解析
#www.baidu.com ---->119.75.216.20
10.0.0.200  www.baidu.com www.jd.com 
##進行測試
/etc/hosts
C:\Windows\System32\drivers\etc\hosts

 

/etc/sysconfig/network  修改主機名的文件
查看當前的主機名
[root@lewen ~]# hostname
lewen

臨時修改主機名-重啓服務器以後失效
[root@lewen ~]# hostname lewenedu01-nb
[root@lewen ~]# hostname
lewenedu01-nb

永久修改主機名-重啓服務器以後生效
[root@lewenedu01-nb ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=lewenedu01-nb
View Code

 

/etc/fstab    開機的時候自動掛載的文件   開機的時候給每一個磁盤分區開一個入口bash

#第一列 --表示設備/分區
#第二列 --表示入口/目錄/掛載點

 /etc/rc.local 開機的時候自動運行的文件   須要開機自啓動的軟件/命令/服務放在這個文件中

Startup

如何讓一個軟件/腳本/服務開機自動運行?
1./etc/rc.local                 #服務器運行軟件的清單
2.經過chkconfig管理 開機自啓動


 
/etc/inittab  開機的時候運行級別的配置文件
init tab(table)

1.linux運行級別講解
0     關機狀態,不要把運行級別設置爲0
1     單用戶模式 root用戶密碼忘記了
2     多用戶模式,可是沒有NFS
3     徹底的多用戶模式,命令模式,文本模式
4     未使用
5     X11,桌面模式,圖形化界面模式
6     重啓狀態,不要把運行級別設置爲6
2.如何查看當前運行級別
[root@lewenedu01-nb ~]# runlevel
N 3
[root@lewenedu01-nb ~]# #N     3
[root@lewenedu01-nb ~]# #上一次使用的運行級別     當前系統的運行級別

3.如何切換運行級別-臨時
[root@lewenedu01-nb ~]# #上一次使用的運行級別     當前系統的運行級別
[root@lewenedu01-nb ~]# init 5
[root@lewenedu01-nb ~]# runlevel
3 5

4.如何永久修改運行級別-重啓生效
[root@lewenedu01-nb ~]# tail -1 /etc/inittab
id:3:initdefault:
 
小結:
1.0-6含義
2.如何查看
3.如何修改 臨時 永久
View Code

 

目錄詳解--/etc/init.d  服務管理的命令


/etc/profile 系統環境變量 別名
PS1 PATH

LANG==>/etc/sysconfig/i18n

/etc/bashrc  別名

#國法(全國各地生效)
/etc/profile     系統環境變量 別名   √√√√√
/etc/bashrc      別名

##家規(地方政策 當前用戶生效)
~/.bashrc       
~/.bash_profile

~表示當前用戶的家目錄
root   ~ ===== /root
lewen ~ ===== /home/lewen




/usr/local 編譯安裝的軟件默認的位置

C:\Program Files windows安裝軟件默認的位置

Linux下面安全軟件的方法
1.yum   (自動解決安裝依賴的軟件)  點外賣-你缺乏什麼外面給你解決
yum   install  tree
2.rpm    (缺啥少啥本身解決)         速凍水餃-半成品-缺乏的東西本身解決
3.編譯                              本身作飯
  買菜切菜---------炒菜----上菜
  ./configure------make----make install

[root@lewenedu01-nb ~]# ##查看軟件是否安裝成功
[root@lewenedu01-nb ~]# rpm -qa |grep tree
tree-1.5.3-3.el6.x86_64

 

/usr/share

/var/log/messages 系統默認日誌信息
/var/log/secure   系統用戶的登陸信息(誰 何時 從哪裏登陸的 是否成功)
 

/proc/meminfo    內存信息
[root@lewenedu01-nb ~]# free
             total       used       free     shared    buffers     cached
Mem:       3908500     386300    3522200        236      39192     165944
-/+ buffers/cache:     181164    3727336
Swap:       786428          0     786428
[root@lewenedu01-nb ~]# free -h
             total       used       free     shared    buffers     cached
Mem:          3.7G       377M       3.4G       236K        38M       162M
-/+ buffers/cache:       176M       3.6G
Swap:         767M         0B       767M
View Code

 

/proc/cpuinfo 查看cpu信息lscpu服務器

/proc/loadavg 系統的負載
 
負載:系統的繁忙程度
最近1分鐘 最近5分鐘 最近15分鐘 平均負載
[root@lewenedu01-nb ~]# w
 22:20:05 up 12:18,  4 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         19:16    2:08m  0.18s  0.18s -bash
root     pts/1    10.0.0.1         11:03    3:02m  0.06s  0.06s -bash
root     pts/2    10.0.0.1         20:32    1.00s  0.18s  0.07s w
root     pts/4    10.0.0.1         20:18    2:01m  0.03s  0.03s -bash
View Code
#系統的負載接近系統cpu的核心數量
 

/proc/mounts 顯示系統掛載信息
df -h
findmnt  == cat /proc/mounts
相關文章
相關標籤/搜索