進程與計劃任務

PID 進程號,用來標記各個進程;CentOS6中起始的第一個進程為init
7中為systemd

進程優先級:

系統優先級:數字越小,優先級越高

0-139(4,5中)

各有140個運行隊列和過期隊列

0-98,99(6中)

實時優先級:99-0:值越大優先級越高

nice值:-2019,對應系統優先級100-13999

進程狀態:

運行:running;就緒:ready; 睡眠:可中斷——interruotable

不可中斷——uninterruptable

停止:stopped,暫停與內存,但不會被調度,除非手動啟動;僵死:zombie,結束進程,父進程結束前,子進程不關閉

Linux內核:搶占式多任務(多任務同時進行,交叉運行)

進程類型:

守護進程:daemon,在系統引導過程中啟動的進程,和終端無關進程

前端進程:跟終端相關,通過終端啟動的進程

注意:兩者之間可以相互轉化

 

pstree -p(能查看編號) {}的為線程(thread)線程之間共享資源

ps 用來查看進程信息

支持三種選項:

UNIX選項 如 -A -e

BSD選項 a

GUN –help

默認顯示當前終端中的進程:

a 包含所有終端中的進程

x 包括不鏈接終端的進程

u 顯示進程所有者的信息

f 顯示進程的父進程

o 屬性顯示定制的信息 —— xao pid|%cpu|%mem|euid|ruid|ninice值)|pripriority|psrprocessorCPU編號)|rtprio(實時優先級)

aux(常用)

 

進程優先級

nice 命令

nice [option] [COMMAND [ARG]…]

nice -n 10 command

nice –6 command 賦予-6優先級

     renice命令

renice [-n] priority pid …

renice -9 pid 賦予-9優先級

搜索進程

預定義模式:pgrep

[option] pattern

-u uid : 生效者

-U uid :真正發起運行命令者

-t terminal :與指定終端相關的進程

-l :顯示進程名

-a :顯示完整格式的進程名

-P pid :顯示指定進程的子進程

pidof command 直接查看進程號

 

uptime 顯示當前系統時間、運行時間、幾個用戶登錄、平均負載(15、10分鐘的負載,一般不超過1

top 相當于windows的任務管理器,實時監控

-b 全部顯示

-d #:指定刷新時間間隔

-n # :刷新多少次后退出

首部信息的顯示:

uptime 信息 —— l

tasks及CPU信息 —— t

CPU信息單獨顯示 —— 1

us 用戶空間 sy 內核空間 ni 調整nice時間 id 空閑 wa 等待IO時間 hi 硬中斷 si 軟中斷 st 虛擬機偷走的時間

k 終止進程 由自己輸入想要終止的進程的進程號

w 將信息存到指定文件中——root下的.toprc

s 指定刷新時間間隔

 

htop 命令 更加方便

-d #:指定延遲時間

-u username:僅顯示指定用戶的進程

-s colume:以指定的字段進行排序

子命令

s:跟蹤選定進程的系統調用

l:顯示選定進程打開的文件列表

a:將選定的進程綁定至某指定CPU核心

t:顯示進程樹

 

 

vmstat命令:虛擬內存信息 vmstat 1 10 1s刷新 刷新10次停止

si :相對于內存來說的,從磁盤讀數據交換到內存的數據速率

so :相對于內存來說的,從內存交換到磁盤的速率 ,內存不夠時調用swap

-s :顯示統計信息

 

iostat:統計CPU和設備IO信息

pmap: 進程對應的內存映射

-x:顯示詳細格式的信息

另外一種實現:cat /proc/PID/maps

 

glances C/S模式下運行glances命令

服務器模式:

glances -s -B
IPADDR

IPADDR:指明監聽的本機的哪個地址

客戶端模式:

glances -c IPADDR

IPADDR:要連入的服務器端地址

dstat :系統資源統計

-c:顯示CPU相關信息

-C#,#,total

-d:顯示disk相關信息

-D total,sda,sdb

-g:顯示page相關統計數據

-m:顯示memory相關統計數據

-n;顯示network相關統計數據

-p:顯示process相關統計數據

-r:顯示io請求相關的統計數據

-s:顯示swapped相關的統計數據

 

kill命令

向進程發送控制信號,以實現對進程管理,每個信號對應一個數字,信號名稱以SIG開頭(可省略),不區分大小寫

顯示當前系統可用信號: kill -l , trap -l

常用信號:man 7
signal

1)SIGHUP:無須關閉進程而讓其重讀配置文件

2)SIGINT:終止正在進行的進程;相當于Ctrl+c

3)SIGQUIT:相當于ctrl+\

9)SIGKILL:強制殺死正在進行的進程

15)SIGTERM:終止正在進行的進程

18)SIGCONT:繼續運行

19)SIGSTOP:后臺休眠

指定信號的方法:

1)信號的數字標識:1,2,9 kill -1 pid

2)信號完整名稱:例如——SIGHUP

3)信號的簡寫名稱:HUP

PIDkill [-SIGNAL] pid …

kill -n SIGNAL pid ; kill -s SIGNAL pid

按名稱 : killall [-sigal] comm…

按模式:pkill [options] pattern

-SIGNAL

-u uid : 生效者

-U uid : 真正發起運行命令者

-t terminal : 與指定終端相關的進程

-l :顯示進程名

-a : 顯示完整格式的進程名

-P pid :顯示指定進程的子進程

 

 

 

 

后臺運行命令:

運行中的作業 : Ctrl +z

尚未啟動的作業:

COMMAND & ;

后臺作業雖然被送往后臺運行,但其仍然與終端相關;退出終端,將關閉后臺作業。如果希望送往后臺后,剝離與終端的關系:

nohup COMMAND
&

screen;COMMAND

查看當前終端所有作業:

jobs ——可以看到JOB_NUM

作業控制 :

fg JOB_NUM:把指定的后臺作業調回前臺

bg JOB_NUM :讓送往后臺的作業在后臺繼續運行

kill %JOB_NUM :終止指定的作業

同時運行多個進程,提高效率

方法1

vim all.sh

f1.sh &

f2.sh &

f3.sh &

方法2

f1.sh &;(f2.sh &);(f3.sh &)

方法3

{f1.sh& f2.sh& f3.sh&}

 

 

at 任務

7——systemctl is-enabled atd 查看at服務是否開機自動啟動

systemctl status
atd 目前是否處于啟動狀態

6——chkconfig –list atd 可用來查看不同模式下的狀態

service atd status
查看目前狀態

at 時間

at> 輸入指定命令

at>……

at> Ctrl +d 退出

ll /app 下是否生成了at.log文件
執行成功

輸入的指令的標準輸出不會在界面輸出,會以郵件的方式通知,但是廣播不會發送郵件,直接廣播通知

會生成下圖中的綠色文件,退出終端、重啟機器,計劃任務依舊會存在,執行完成后,刪除文件

進程與計劃任務

常用選項:

-V:顯示版本信息

-l:列出指定列隊中等待運行的作業;相當于atq

-d #(atq 查看的編號或者at -l):刪除指定的作業;相當于atrm

-c:查看具體作業任務

-f /path/from/somefile
:從指定的文件中讀取任務

-m:當任務被完成后,將給用戶發送郵件,沒有標準輸出

注意:作業執行命令的結果中的標準輸出和錯誤以郵件通知給相關用戶

time:定義出什么時候進行at這項任務

HH:MM(小時:分鐘)

noon , midnight ,teatime4pm),tomorrow

now+#{minutes,hoursdays,weeks}

執行方式:

1、交互式 2、輸入重定向 3、at -f 文件

/etc/at.{allow,deny}控制用戶是否能執行at任務

白名單:/etc/at.allow 默認不存在,只有改文件中的用戶才能執行at命令

黑名單:/etc/at.deny 默認存在,拒絕改文件中的用戶執行at命令,而沒有在at.deny文件中的使用者則可以執行

at.allow :優先級高,有此文件,deny無效,只有此文件里的用戶可以使用at

at.deny:優先級低

如果都沒有,普通用戶全都拒絕使用at


周期性執行任務 cron計劃周期性執行的任務提交給crond,到指定時間會自動運行

相關的你程序包:

cronie:主程序包,提供crond守護進程及相關輔助工具

cronie-anacron:cronie的補充程序,用于監控cronie任務執行狀況,如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨后啟動一次此任務

crontabs:包含CentOS提供系統維護服務

系統cron任務:系統維護作業

/etc/crontab

man 5 crontab 查看幫助

用戶cron任務:

crontab命令

日志:/var/log/cron

vim /etc/crontab (系統計劃任務)

進程與計劃任務

每個不同時間之間 空格隔開彼此

時間表示法

1、特定值

給定時間點有效取值范圍內的值

2、* 給定時間點上有效取值范圍內的所有值,表示…”

3、離散取值: # # #

4、連續取值 : #—#

5、在指定時間范圍上,定義步長

/# :#即為步長 例如:在分鐘 */2 表示為每2分鐘

日期與星期:

* * 10,20 * 0,6 之間的關系是或的關系,即每月的10號,20號,或者周六周日執行,且的關系時,可以用腳本來過濾星期

* * 10,20 * * 此為每月的10號和20

關鍵字:

@reboot 重啟之后執行

@yearly 0 0 1 1 *

@annually 0 0 1 1 *

@monthly 0 0 1 * *

@weekly 0 0 * * 0

@daily 0 0 * * *

@hourly 0 * * * *

示例:每3小時echowall命令

0 */3 * * * root
/bin/echo “howdy”; /usr/bin/wall “welcome to magedu!”

 

注意:運行結果的標準輸出和錯誤以郵件通知各相關用戶

1、COMMAND > /dev/null ;2、COMMAND
&> /dev/null(
或者 > /dev/null 2>&1)

對于cron任務來說,%有特殊用途;如果在命令中要使用%,則需要轉義,將%放置于單引號中,則可不用轉義

系統的計劃任務:

/etc/crontab

/etc/cron.d/ 配置文件

/etc/cron.hourly/ 腳本

/etc/cron.daily/ 腳本

/etc/cron.weekly/ 腳本

/etc/cron.monthly/ 腳本

普通用戶的計劃命令存放位置:

/var/spool/cron/

 

anacron系統:

/etc/anacrontab 配置文件,負責執行/etc/cron.daily /etc/cron.weekly/
/etc/cron.monthly
中的系統任務

字段1、如果在這些日子里沒有運行這些任務…..

字段2、在重新引導后等待這么多分鐘后運行它

字段3、任務識別器,在日志文件中識別

字段4、要執行的任務

/etc/cron.hourly/0anacron執行

當執行任務時,更新/var/spool/anacron/cron.daily文件的時間戳

管理臨時文件:

CentOS6 使用/etc/cron.daily/tmpwatch 定時清除臨時文件

CentOS7 使用systemd-tmpfiles-setuo服務實現

配置文件:

/etc/tmpfiles.d/*.conf

/run/tmpfiles.d/*.conf

/usr/lib/tmpfiles/*.conf

/usr/lib/tmpfiles.d/tmp.conf

d /tmp 1777 root root 10d

d /var/tmp 1777 root root 30d

命令:

systemd-tmpfiles-clean|remove|create configfile

crontab 命令定義,每個用戶都有專用的cron任務文件:

/var/spool/cron/USERNAME

crontab 命令;

-l :列出所有任務;

-r:移除所有任務

-i:同-r一同使用,以交互式模式移除指定任務

-u user : 僅root用戶可運行,指定用戶管理cron任務

創建、編輯計劃任務 : crontab -e -u wang wang用戶的身份執行,不謝就以自身執行)

不用寫用戶,直接寫時間和命令

e EDITOR 默認使用vi 可以用export EDITOR=vim 則編輯的時候為vim編輯器

vipw 相當于 vi /etc/passwd

控制用戶執行計劃任務:

/etc/cron.{allow,deny}
之前已經設置的某用戶的任務,將用戶放在deny中,該任務依舊執行

若是不小心刪除,恢復 可在 /etc/log/cron的日志中查看 執行的命令

任務執行實現秒級:

* * * * * for min
in 0 1 2 ; do echo “hi” ; sleep 20 ; done 實現每20s執行一次

sleep命令:

sleep # s/m/h/d (秒/分鐘/小時/天)
默認為s

 

cat sysstat 系統自定義的生成的日志

 

 

 

原創文章,作者:Immortals、zcy,如若轉載,請注明出處:http://www.www58058.com/75574

(0)
Immortals、zcyImmortals、zcy
上一篇 2017-05-14
下一篇 2017-05-14

相關推薦

  • 6個變態的C語言Hello World程序

    下面的六個程序片段主要完成這些事情: 輸出Hello, World 混亂C語言的源代碼 下面的所有程序都可以在GCC下編譯通過,只有最后一個需要動用C++的編譯器g++才能編程通過。 hello1.c  #define _________ }     #define ______…

    Linux干貨 2016-05-08
  • 8月3日作業

    1、三種權限rwx對文件和目錄的不同意義     文件:         r:可讀         w:可修改內容,不可刪除   &nbsp…

    Linux干貨 2016-08-05
  • keepalived高可用haproxy配合varnish實現wordpress的動靜分離

    haproxy和nginx都可以作為七層和四層反代服務器對外提供服務,此文通過haproxy和keealived配置varnish搭建wordpress的動靜分離站點 一、實驗環境 五臺虛擬機: haproxy-1:搭建haproxy和keepalived服務,ip地址:192.168.11.176 haproxy-2:搭建haproxy和keepalive…

    2017-07-03
  • vsftp通過pam_mysql做虛擬用戶認證

    vsftpd可以通過三種賬戶登錄系統: 系統賬戶:系統本地賬戶登錄系統,默認進入的目錄是用戶家目錄,可以在所有有權限的路徑切換; 匿名賬戶:匿名用戶登錄,然后映射為一個本地用戶; 虛擬賬戶:既不是系統本地用戶也不是匿名用戶,而是通過pam做第三方認證的方法,支持文件和數據庫,ldap的認證,此處通過mysql進行實驗; 一、準備實驗環境 實驗在一臺虛擬機上進…

    Linux干貨 2017-06-07
  • 程序包編譯安裝

    linux安裝采用命令行形式。

    2018-03-17
  • Linux 啟動流程

    Linux啟動流程 POST–>Boot Sequence–>MBR–>Grub–>Kernel(initramfs)–>rootfs–chroot(根切換)–>/sbin/init–>RunLevel–&gt…

    Linux干貨 2016-06-09
欧美性久久久久