1. 管道會將前乙個命令的輸出作為後乙個命令的輸入
[root@node01 /]
# ll | more
total 94
dr-xr-xr-x. 2 root root 4096 oct 15 07:19 bin
dr-xr-xr-x. 5 root root 1024 oct 15 00:17 boot
drwxr-xr-x. 2 root root 4096 oct 9 2018 cgroup
drwxr-xr-x. 19 root root 3740 oct 16 07:20 dev
drwxr-xr-x. 63 root root 4096 oct 16 10:38 etc
drwxr-xr-x. 2 root root 4096 sep 23 2011 home
dr-xr-xr-x. 8 root root 4096 oct 15 00:07 lib
dr-xr-xr-x. 9 root root 12288 oct 15 07:19 lib64
drwx------. 2 root root 16384 aug 7 06:24 lost+found
drwxr-xr-x. 2 root root 4096 sep 23 2011 media
drwxr-xr-x. 2 root root 4096 sep 23 2011 mnt
drwxr-xr-x. 4 root root 4096 oct 15 07:45 opt
dr-xr-xr-x. 93 root root 0 oct 16 07:19 proc
dr-xr-x---. 3 root root 4096 oct 15 23:23 root
dr-xr-xr-x. 2 root root 12288 oct 15 07:19 sbin
drwxr-xr-x. 7 root root 0 oct 16 07:19 selinux
drwxr-xr-x. 2 root root 4096 sep 23 2011 srv
drwxr-xr-x 13 root root 0 oct 16 07:19 sys
drwxrwxrwt. 3 root root 4096 oct 16 07:20 tmp
drwxr-xr-x. 13 root root 4096 aug 7 06:24 usr
drwxr-xr-x. 17 root root 4096 aug 7 06:24 var
2. 管道兩邊會建立子程序[root@node01 /]
# num=0
[root@node01 /]
# echo $num
0[root@node01 /]
# ((num++))
[root@node01 /]
# echo $num
1[root@node01 /]
# ((num++)) | echo ok
ok[root@node01 /]
# echo $num
1
3.$$
代表/bin/bash,$bashpid
同樣代表/bin/bash,但是二者有區別,$$
的優先順序高於|
,$bashpid
的優先順序低於|
[root@node01 /]
# echo $$ | more
1728
[root@node01 /]
# echo $$
1728
[root@node01 /]
# echo $bashpid | more
1764
[root@node01 /]
# echo $bashpid | more
1766
4. linux父子程序的資料隔離
請區分exit退出子程序前後的現象
exit之前展示的是父子程序的資料是隔離的
exit之後展示的是父程序可以讓子程序看到自己的資料,需要export
對於export的環境變數,子程序的修改不會影響父程序,父程序的修改也不會影響子程序(**沒有演示)
[root@node01 /]
# num=0
[root@node01 /]
# echo $num
0[root@node01 /]
# echo $$
1728
[root@node01 /]
# /bin/bash
[root@node01 /]
# echo $$
1772
[root@node01 /]
# pstree
init─┬─auditd───
├─login───bash
├─5*[mingetty]
├─mysqld_safe───mysqld───27*[
] ├─3*[redis-server───4*]
├─rsyslogd───3*[
] ├─sshd───sshd───bash───bash───pstree
└─udevd───2*[udevd]
[root@node01 /]
# echo $num
[root@node01 /]
# [root@node01 /]
# exit
exit
[root@node01 /]
# pstree
init─┬─auditd───
├─login───bash
├─5*[mingetty]
├─mysqld_safe───mysqld───27*[
] ├─3*[redis-server───4*]
├─rsyslogd───3*[
] ├─sshd───sshd───bash───pstree
└─udevd───2*[udevd]
[root@node01 /]
# echo $num
0[root@node01 /]
# export num
[root@node01 /]
# /bin/bash
[root@node01 /]
# pstree
init─┬─auditd───
├─login───bash
├─5*[mingetty]
├─mysqld_safe───mysqld───27*[
] ├─3*[redis-server───4*]
├─rsyslogd───3*[
] ├─sshd───sshd───bash───bash───pstree
└─udevd───2*[udevd]
[root@node01 /]
# echo $num
0[root@node01 /]
#
5. 如何讓程序在後台執行
在指令後面加個&
[root@node01 /]
# ./test.sh &
6. fork()建立子程序的原理
寫時複製
目的:避免建立子程序時拷貝了大量的父程序裡的資料,因為子程序可能不會把所有父程序的資料都重新寫一遍更詳細的可以參閱:
Redis管道機制(pipeline)
redis管道機制 pipeline redis的管道機制,其實是為了批量讀寫而設計的,如果進行多次的讀和寫資料到redis,每次都建立乙個鏈結,這樣是比較消耗資源的,而且也比較忙,於是想到了管道機制 pipeline 只建立乙個連線,然後批量執行讀或寫。插入資料效果 非管道 資料量 2w,執行時間...
pipeline管道初體驗
最近在乙個電商專案中,應用到了pipeline,特地和大家分享一下。由於在訂單生成時,會進行1 初始化,2驗證,3,操作 優惠劵 減價 拆分訂單 4儲存訂單,5,訂單審批流處理等等。以此說明這個流程是相當複雜的。然後就使用 了pipeline管道。pipeline模型應用可以外掛程式式的按邏輯處理一...
Redis 管道技術 Pipeline
管道技術 pipeline 是客戶端提供的一種批處理技術,用於一次處理多個 redis 命令,從而提高整個互動的效能。通常情況下 redis 是單行執行的,客戶端先向伺服器傳送請求,服務端接收並處理請求後再把結果返回給客戶端,這種處理模式在非頻繁請求時不會有任何問題。但如果出現集中大批量的請求時,因...