linux的目录图:转自细说linux挂载
/ (这就是著名的根)
├── bin (你在终端运行的大多数程序,比如cp、mv...)
├── boot (内核放在这里,这个目录也经常被作为某个独立分区的挂载点)
│ └── grub (grub引导程序和引导菜单就放在这里)
├── cdrom
├── dev (存放设备文件,这里相当于一个设备管理器,由系统自动生成。视硬件环境不同变化很大)
│ ├── block
│ ├── bsg
│ ├── bus
│ ├── char
│ ├── disk (磁盘信息,要挂载硬盘分区就要注意这里的信息喽)
│ │ ├── by-id (硬盘分区的永久性符号链接)
│ │ ├── by-label (按卷标识别的硬盘分区,常用于挂载)
│ │ ├── by-path (硬盘分区的节点链接)
│ │ └── by-uuid (按UUID识别的硬盘分区,常用于挂载)
│ ├── dri
│ ├── fd
│ ├── input
│ ├── net
│ ├── pts
│ ├── shm
│ └── snd
├── etc (存放所有程序和系统的配制文件和全局变量,对所有用户生效,非常值得备份)
├── home (这就是著名的home目录了,注意不是”家目录”,强烈建议把一个独立分区挂载到这里!)
│ ├── adagio (这才是我真正的家!一般来说目录名就是帐号名,当然也可以不是,随便。命令行中用波浪线~代表这里)
│ ├── MNT (这是我挂载其它硬盘分区的地方,你可以看到用硬盘品牌、容量或用途区分的目录名)
│ │ ├── MAX40NT1 (迈拓40G)
│ │ ├── ST160NT1 (希捷160G第一分区,下面两个类似)
│ │ ├── ST160NT2
│ │ ├── ST160SYS
│ │ ├── ST320G (希捷320G)
│ │ │ ├── MOVIE
│ │ │ ├── MUSIC
│ │ │ └── P2P (电驴、BT的缓冲区)
│ │ ├── ST80G (希捷80G)
│ │ │ ├── PROGRAM
│ │ │ ├── ST80PE
│ │ │ └── YEAR
│ │ └── WD1000 (西数1T)
│ │ ├── WD2
│ │ ├── WD3
│ │ ├── WD5
│ │ ├── WD6.Lib
│ │ └── WD7
│ └── test (我建立的另一个帐号的家目录,专门用于测试,一旦搞到无法收拾的地步,只需简单的
│ 把里面的所有文件删除,就可以恢复默认。实际上你可以拥有无数个帐号)
├── lib (所有程序共享的库文件)
├── lost+found (磁盘扫描出现的丢失的数据)
├── media (你在文件管理器里点击后自动挂载的分区就在这里,按卷标命名,没有卷标则按大小命名)
├── mnt (同样用于挂载磁盘,这是最传统的位置,喜欢挂哪里随便)
├── opt (某些特殊的程序喜欢把数据放在这里,比如JAVA)
├── proc (当前系统所有的详细信息,这里的”文件”并不存在于硬盘中,而是在内存或缓存里,每次启动后都不一样)
├── root (这是系统最高权威root用户的家!他是老大,所以不住在/home里,那里是草民住的)
├── sbin (类似/bin,存放常用程序,但这里的程序都是要命的啊,比如格式化,所以只有root用户或sudo程序有权使用)
├── srv (一些服务所要访问的文件)
├── sys (系统的核心文件,类似/proc,不必管它)
├── tmp (存放临时文件,所有用户均可使用,不过你要小心啊,这里的所有文件一旦重启就全没了,自动清空的)
├── usr (你在X下使用的所有程序数据都在这里了,包括图标、manual等。所有用户都可以使用。也是最庞大的目录)
└── var (variation,顾名思义就是变量,这里存放系统中经常变化的数据。和/tmp不同啊,很有用的地方)
├── backups
├── cache
│ └── apt
│ └── archives (存放你安装的所有程序的deb包!重装系统时太有用了,一定要备份好,到时候放回来。
│ 我建议把整儿/var单独挂载到一个独立分区,像/home一样。这样你重装好系统后,只
│ 需要简单的把整儿分区挂载到/var就行了,省去了备份-还原的时间。要知道这些deb包
│ 可不是几十M而已,而是有可能几百M、几个G,一来一回可够呛的。你也可以单独挂载
│ 一个分区到/var/cache/apt/archives,其他的都不要。
│ 当然,这样又增加了一点系统构造的复杂度,喜欢怎样请自己斟酌。)
├── crash
├── games
├── lib
├── local
├── lock
├── log (呵呵,这里的文件是系统运行的完整记录,出了问题一定要来这里看看)
├── mail (这里是存放所有用户email的地方)
├── opt
├── run
├── spool
└── tmp
- 命令之后的参数除了前面带有减号’-‘之外,某些特殊情况下,参数前面也会带有正号’+'的情况。比如
date
查询日期,后面可以加参数:date +%Y/%m/%d
,date +%H:%M
,date +"%Y-%m-%d %H:%M"
。 - 使用
cal [[month] year]
查看某年某月的日历。 bc
进入计算器,输入scale=n
来指定小数点的位数,使用quit
退出。- 在man page中常用的一些按键:
/string
向下查询string字符串;?string
向上查询string字符串;n N
n来继续下一个查询,N来反向查询; man -f 命令名
查看还有哪些说明文件和命令有关。完全匹配查询。man -k 命令名
查看还有哪些说明稳健和命令有关。模糊匹配查询,比如man -k date
还会查出getdate等包含date的。- 在使用
makewhatis
创建了whatis数据库的情况下,whatis [命令或者是数据]
相当于man -f 命令名
,apropos [命令或者是数据]
相当于man -k 命令名
。 - linux中有很多文本编辑器,比如
vi
,nano
。 - 查看当前有谁在线,使用
who
。 - 查看网络的联机状态,使用
netstat -a
。 - 查看后台执行的程序,使用
ps -aux
。 - 使用
sync
将内存中尚未被更新的数据写入硬盘中。 - 使用
ls -al
查看当前目录下的所有文件(包括隐藏文件,文件名第一个字符为“.”的文件)及其权限相关信息。 - 使用
chgrp [-R] 用户组名 dirname/filename
来改变文件所属用户组。-R是递归,如果是目录,则目录下的所有文件都改变。用户组名必须在/etc/group
文件内存在。 - 使用
chown [-R] 账户名称:组名 文件或目录
来改变文件所有者。chwon也能改变用户组,chown [-R] .组名 文件或目录
来单纯的改变组名。用户名称必须在/etc/passwd
文件中存在。 - 使用
chmod [-R] xyz 文件或目录
来改变文件的权限,r=4,w=2,x=1,参数xyz分别是用户,用户组,other的r,w,x的总和。 - 使用符号类型改变权限,u=user,g=group,o=other,a=all,+为添加,-为删除,=为设置,比如
chmod u=rwx,go=rx 文件/文件名
,chmod a+x 文件或文件名
。 - 对文件来说,r是可读取文件的实际内容;w是可以编辑文件内容,但不能删除;x是可以被执行;对目录来说,r是可以查看该目录下的文件名数据,即可以使用ls命令;w是可以改变目录结构;x是可以进入该目录,即可以使用cd。
- Linux下,一个文件能不能被执行,与文件名一点关系都没有,只和权限有关。当然能不能执行成功又是另一回事。文件名的作用只是让人了解该文件可能的用途而已。
- 使用
uname -r
来查看实际的内核版本。 - 使用
lsb_release -a
查看linux更具体的信息。 - 绝对路径:由根目录/写起
- 相对路径:意指相对于目前工作目录的路径。
- 特殊的目录:
.
代表此层目录;..
代表上一层目录;-
代表前一个工作目录;~
代表“目前用户身份”所在的主文件夹;~account
代表account这个用户的主文件夹。 cd [相对路径/绝对路径]
;使用cd ~account
到这个用户的主文件夹;使用cd ~
回到自己的主文件夹;cd
也是回到自己的主文件夹;使用cd -
表示回到刚才的那个目录。pwd [-p]
显示当前目录。mkdir [-m xyz] [-p] 目录
,-m是设置权限,-p是递归创建。比如mkdir -m 711 test2
,mkdir -p test1/test2/test3/test4
会将test1等都创建出来。- 使用
PATH="$PATH":路径
将路径添加到PATH变量中。 - 使用
rmdir [-p] 目录名称
删除空目录,-p参数会将上层“空的”目录一起删除。 ls -a
->全部的文件,包括隐藏文件;ls -d
->仅列出目录本身,而不是列出目录内的文件数据;ls -l
列出长数据串,包含文件的属性与权限等数据;cp
除了单纯复制以外,还可以创建连接文件(快捷方式),对比两文件的新旧而予以更新,以及复制整个目录等。- cp命令的来源档和目的档的权限是不同的,目的档的拥有者通常会是指令操作本身,所以如果要完整复制文件权限,必须要加上-a或者是-p。
rm -f 文件/目录
强制删除,-r
递归,-i
互动询问你是否真的删除。\rm
命令前加上反斜杠,可以忽略掉指定参数。- 使用
mv
这个命令可以移动目录和文件,也可以用来重命名。 - 使用
basename /etc/sysconfig/network
取得最后的文件名network,使用dirname /etc/sysconfig/network
取得目录名/etc/sysconfig
。 cat
,tac
,nl
都是一次性将数据显示到屏幕上面,more
和less
是可以一页一页翻动的。less
最有弹性,使用方式和man page非常类似。- 使用
head [-n number] 文件
取出文件前面n行,如果参数是负数,比如-n -100,文件有141行,则只取41行,后面100行不取。 - 使用
tail [-f] [-n number] 文件
来取文件后面几行。-f表示持续检测,number前面加+时,比如-n +100,则只显示100行以后的数据。 - 使用
od [-t type] 文件
读取非纯文本文件。type可以是ASCII,十进制,八进制等。 - 使用
touch
这个命令创建一个空的文件,也可以将某个文件日期修改为目前日期。 mtime
为文件内容数据更改时间;ctime
是文件状态修改时间,比如权限和属性;atime
是文件读取时间,比如cat了这个文件。- 使用
umask
查看默认文件权限,abcd,a是特殊权限,bcd是用户用户组和其他的权限补码,比如bcd是002,则补充码是777-002=775,775就是创建目录的默认权限(r=4,w=2,x=1)。因为文件一般没有执行权限,则775-111=664为文件的默认权限。 - 使用
umask -S
可以查看目录的默认权限,以字符串的方式,比如u=rwx,g=rwx,o=rx
。 - 特殊权限有SUID,SGID和SBIT。前面的umask设置默认权限的abcd的a就是用来设置特殊权限的。SUID=4,SGID=2,SBIT=1。
- SUID是让没有二进制文件(目录没有意义)的x权限的用户短暂拥有该文件文件所有者的权限。u必须有x权限才能设置SUID,比如-rwx------,使用
chmod u+s 文件名
来设置或者chmod 4--- 文件名
来设置。设置好之后是-rws------。如果u没有x权限,则设置之后无效,显示为-rwS------,大写S表示无效。 - SGID是让没有二进制文件/目录权限的用户短暂拥有该文件所属用户组的权限。g必须有x权限才能设置SUID,如果是目录的话还必须有r权限,比如----rwx—,使用
chmod g+s 文件名
来设置或者chmod 2--- 文件名
来设置。设置好之后是----rws—。如果g没有x权限,则设置之后无效,显示为----rwS—,大写S表示无效。 - SBIT是让用户只能删除
目录
下自己创建的文件/目录,不能删除其他用户创建的。o必须有x权限才能设置SBIT,比如-------r-x,使用chmod o+t 文件名
来设置或者chmod 1--- 文件名
来设置。设置好之后是-------r-t。如果o没有x权限,则设置之后无效,显示为-------r-T,大写T表示无效。 - 使用
file 文件/目录
来查看文件的类型。 - 使用
which 文件
指令在环境变量$PATH设置的目录里查找符合条件的文件。比如which chmod
。 - 使用
whereis 文件名
在一些特定的目录中寻找文件文件名。主要是在bin和man中寻找。使用whereis -l
查看是在哪些目录下查找的。 - find命令直接搜寻硬盘,比较费时间。使用
find [PATH] -mtime n
来查找n天之前的当天的更改过内容的文件。使用find [PATH] -mtime +n
来查找在n天之前不包括当天的更改过内容的文件。使用find [PATH] -mtime -n
来查找在n天之内的不包括当天的更改过内容的文件。mtime也可以是atime,ctime。 - 使用
find [PATH] -newer file
寻找在路径下比文件file更新的文件。 - 使用
find [PATH] -uid n
来查看路径下uid为n的文件;使用find [PATH] -gid n
来查看路径下gid为n的文件;使用find [PATH] -user name
来查看路径下所属者名称为name的文件;使用find [PATH] -group name
来查看路径下所属群组为name的文件;使用find [PATH] -nouser
来查看路径下文件拥有者不存在于/etc/passwd中的文件;使用find [PATH] -nogroup
来查看路径下文件所属群组不存在于/etc/group中的文件; - 使用
find [PATH] -name filename
搜寻文件名为filename的文件;使用find [PATH] -size [+-]SIZE
搜寻比SIZE大(+)或小(-)的文件,SIZE的单位为c(字节),k(2014字节);使用find [PATH] -type TYPE
搜寻路径下文件类型为TYPE的文件,TYPE可以为:一般正规文件 (f), 装置文件 (b, c),目录 (d), 连结档 (l), socket (s), 及 FIFO §;使用find [PATH] -perm mode
在路径下搜寻权限刚好为mode的文件,比如4755;使用find [PATH] -perm -mode
在路径下搜寻权限囊括mode的文件;使用find [PATH] -perm /mode
在路径下搜寻权限mode以内的文件。 find / -perm /7000 -exec ls -l {} \;
- /dev/sd[a-p][1-128]:为实体磁盘的磁盘文件名;/dev/vd[a-d][1-128]:为虚拟磁盘的磁盘文件名。
- inode记录文件的权限,拥有者以及群组,文件容量,ctime,atime,mtime以及文件真实数据存放的block号,一个文件有且只有一个inode;一个文件可以放在多个block,但是一个block只能存放一个文件的数据,目录的block记录目录下文件的inode号以及文件名;superblock记录inode和block的数量以及使用情况等。
- 使用
ls -i
查看inode号以及文件名。 - df:列出文件系统的整体磁盘使用量;du:评估文件系统的磁盘使用量;
- 使用
ln
创建硬链接,使用ln -s
创建符号链接。 - 关于硬链接和符号链接的介绍
- 下面是硬链接图示
- 下面是符号链接图示
- 使用
mount [-t 文件系统] UUID='uuid 值' 挂载点
来挂载。 - 挂载就是文件系统和目录树的结合过程。
- 使用
gzip
进行文件压缩解压时,常用的几个命令:使用gzip -v -# 文件名
对文件进行压缩,并把文件的压缩比等信息输出出来,#为数字,1-9,数字越高,速度越慢,压缩比越好,默认是6,压缩之后的文件以gz结尾,原文件消失;使用gzip -d *.gz
进行文件的解压;使用zcat/zmore/zless *.gz
去尝试读取压缩文件的内容;使用gzip -c -# 文件名>压缩后文件名.gz
来压缩文件,保留原文件;使用zgrep ‘查找内容’ *.gz
,不必解压文件,查找文件内容。 bzip2
用法几乎和gzip
一模一样,但是压缩比比gzip
更好。使用bzcat/bzmore/bzless *.bz2
去尝试读取压缩文件的内容;xz
压缩比比bzip2
更好,但是时间花的更久,用法几乎和gzip
,bzip2
一样。使用xzcat/xzmore/xzless *.xz
去尝试读取压缩文件的内容;- 上面的指令都是对文件分别进行压缩,如果要将很多数据包成一个文件,需要使用打包指令
tar
。 - 使用
tar -[z/j/J]cv -f filename.tar.[gz/bz2/xz] 要被压缩的文件或目录名称
来进行压缩;z/j/J
和gz/bz2/xz
对应。 - 使用
tar -[z/j/J]tv -f filename.tar.[gz/bz2/xz]
来进行查询;z/j/J
和gz/bz2/xz
对应。 - 使用
tar -[z/j/J]xv -f filename.tar.[gz/bz2/xz] -C 欲解压缩的目录
来进行解压缩;z/j/J
和gz/bz2/xz
对应。 - 如果只是打包的文件,比如
tar -cv -f file.tar
得到的文件,称之为tarfile
;如果是打包+压缩的文件,称之为tarball
。 - 使用
tar -cvf - 待复制文件或目录 | tar -xvf -
进行复制。复制到当前目录。 - vim有三种模式:一般模式,编辑模式,命令模式。一般模式可以通过
i
进入编辑模式,编辑模式通过ESC
退回到一般模式;一般模式通过:wq
,:wq!
等从命令模式退出vim。 - 指令的历史记录存在
~/.bash_history
中,这里面记录的是前一次登入以前所执行过的指令,而至于这一次登入所执行的命令都被暂存在内存中,当你成功注销系统后,该次指令才会记录到~/.bash_history
中。 - 使用
type 命令名
来判断命令是不是内建命令,file
代表为外部命令,builtin
代表为内建命令,alias
代表是别名。加入- p
参数时,只有为file时才会显示完整路径名。 PATH="$PATH":/home/bin
为变量追加内容。export PATH
使自定义变量成为环境变量。- 使用
unset 变量名
来取消变量。 - 使用
cd $HOME
回到用户主目录,和cd ~
和cd
功能一样。 - 使用
echo $$
查看shell的PID。 - 使用
echo $?
查看上一个命令执行的结果,0是成功执行,其他错误码各有含义。 - 使用
read -p "提示语" -t 等待的时间 变量名
来从键盘输出内容存为变量值。
declare [-aixr] variable
选项与参数:
-a:将后面名为 variable 的变量定义成为数组 (array) 类型
-i:将后面名为 variable 的变量定义成为整数数字 (integer) 类型
-x:用法与 export 一样,就是将后面的 variable 变成环境变量;
-r:将变量设定成为 readonly 类型,该变量不可被更改内容,也不能 unset
-
使用
declare -a btp=("a" "b" "c" "d")
声明一个名为btp的数组,使用${btp[数组下标]}
来访问数据中的元素。 -
如果要设置变量为运算式的值,不能使用
变量名=1+2+3
而要使用declare -i 变量名=1+2+3
。 -
ulimit
限制建立文件大小等功能。比如ulimit -f 大小
来限制用户可以建立的文件的最大。 -
-
使用
alias 命令别名='命令'
为命令增加一个别名,命令别名可以直接执行;通过alias
查看当然有多少别名;unalias 命令别名
使一个别名无效。 -
别名可以当命令执行,而变量必须通过
echo
呼出。 -
使用完linux之后,最好使用
history -c
清除你的命令执行记录。 -
指令运行的顺序:1.以绝对或相对路径执行命令;2.由alias找到指令执行;3.由builtin内建指令运行;4.通过$PATH找到的第一个指令运行。
-
使用
source 配置文件
将配置文件读入目前的环境当中而不用重新登录。. 配置文件
也能达到相同的作用。 -
-
1>:以覆盖的方法将『正确的数据』输出到指定的文件或装置上;
1>>:以累加的方法将『正确的数据』输出到指定的文件或装置上;
2>:以覆盖的方法将『错误的数据』输出到指定的文件或装置上;
2>>:以累加的方法将『错误的数据』输出到指定的文件或装置上; -
使用
命令 >文件1 2>文件2
将命令的正确输出重定向到文件1,错误信息重定向到文件2,文件1和文件2不能是同一个文件,不然会交叉输出;使用命令 >文件 2>&1
或命令 &> 文件
将正确信息和错误信息都重定向到同一个文件,不会交叉。1>&2
是将正确信息当成错误信息来输出。 -
管线命令只能接收正确的信息,即上一个命令的
standard output
,当然也可以通过2>&1
将错误信息变为正确信息。管线命令必须是可以接收正确信息的命令。 -
使用
cut -d '分隔符' -f 分割后第几个值
,cut -c 字符区
间管道命令对命令执行后的standard output
进行处理。cut
是以行为单位进行处理。 -
sort
是管道排序,uniq
是删除重复的行,wc
是显示行,字数,字符数。 -
双向重导向
tee
可以将命令的standard output
同时导向文件和屏幕(即管道命令可以使用的)。tee [-a] filename
,-a是以累加的方式。 -
使用
split -b 文件分区每个分区大小 文件 分区后文件前缀
来对文件进行大小分区;使用split -l 行数 文件 文件前缀
对文件按行数分区。 -
如果需要stdin或stdout时,偏偏又没有文件,可以使用
-
。 -
使用
grep -n -v -[ABC] 行数n '查找内容' file
来查找文件中包含查找内容的行,-A代表后n行同时显示出来,-B表示前n行同时显示出来,-C代表前后各n行都显示出来。-n代表显示行数。-v表示反向选择,即没有查找内容的显示出来。 -
在正规表示法中,
^
在括号[]
内和括号[]
外是不一样的,在括号[]
内表示反向选择,在括号[]
外表示定位在行首。$
表示是行尾换行。所以如果你想要找空行,可以使用grep -n '^$' file
来找出空行的行数。如果不想输出空行,则可以使用反向选择。 -
正规表达式中,
.
代表任意一个字符;*
代表0到无穷个字符;比如1*
代表0到无穷个1。所以.*代表0到无穷个任意字符。 -
sed
命令很强大! -
使用
diff [-bBi] from-file to-file
比对文件,-b
忽略空白字符的差异,-B
忽略空行差异,-i
忽略大小写。diff是以行为单位进行比对。 -
可以把shell script看成是批处理文件,也可以说是程序语言,因为都是利用shell与相关工具指令,所以不需要编译。
-
使用bash shell脚本或sh shell脚本执行shell脚本。
-
使用
exit n
告诉系统你的shell执行结果,n可以通过echo $?
获得。 -
使用
bash
或者sh
执行script,里面的变量是在子bash中有效,执行完在当前的bash中并不存在;如果想在当前的bash中也生效,使用source 文件名.sh
。
-
$#
代表参数个数,$@
和$*
都可以显示所有参数。 -
script里使用
shift
可以偏移参数。
-
function也可以传参数,
函数名 参数
的形式,和shell script类似,在function内部$0代表函数名,$1代表第一个参数,$2代表第二个参数…以此类推。
-
$(seq 1 100)
可以产生1-100的连续数字。
-
使用
groups
来查看当前账号的群组,第一个群组就是有效群组,使用账号新建文件时候的所属群组。 -
使用
newgrp 新有效群组
来变更有效群组,要变更的有效群组必须是groups
里面的。
-
使用
useradd -D
查看添加用户的默认值。 -
root使用
passwd 账号名
来修改某个账号的密码,如果不加参数账号名
,那就是修改的是自己的密码。 -
echo "abc543CC" | passwd —stdin 账号名
-
使用
passwd -l 账号名
暂时锁住一个账号,使用passwd -u 账号名
解除账号,其实就是在/etc/shadow
里相关的账号密码前加上!!
。 -
使用
usermod 账户名
修改账户的一些参数。 -
使用
userdel -r username
删除账户,连同家目录一起删除(参数-r)。 -
groupadd
,groupdel
,groupmod
和上面user的差不多。 -
使用
gpasswd
使用群组管理员功能。 -
使用
dmesg | grep -i acl
查看是否支持acl。 -
使用
setfacl
设置文件的针对某个用户,某个群组的权限;使用getfacl
获取文件的针对某个用户,某个群组的权限。 -
完整的切换账号,使用
su - username
或者su -l username
,使用su -
切换到root,仅执行一次root指令可以使用su - -c "指令串"
。使用su来切换到root时,必须要知道root的密码。root切换到普通用户,不需要输入密码。 -
使用sudo以root身份执行指令时,不需要知道root的密码,只需要知道自己的密码,只要该用户是
/etc/sudoers
内的用户。 -
使用
visudo
来修改/etc/sudoers。 -
使用
w
或者who
查询目前已登入系统的用户。 -
使用
lastlog
查询每个账号的最近登入的时间。 -
使用
write 账号 账号所在终端接口
来向在线的用户发送信息。 -
使用
mesg n
来拒绝别人发送的信息。使用mesg y
来重新接收。使用mesg
查看当前状态。 -
使用
wall "消息"
来向所有的用户发送信息。 -
使用
pwck
检查账号信息是否有错。 -
使用
pwconv
将/etc/passwd
内的账号与密码移动到/etc/shadow
中。 -
at
指令需要启动atd
服务,at
这个指令将所要运行的工作以文本文件的方式写入/var/spool/at/
目录内,atd
服务就可以取用和执行了,at
实际运作单一工作排程。使用atq
查看接下来的排成,使用atrm
移除某个排程。 -
batch
是在at
的基础上,让排程在cpu工作负载较小时执行。 -
uptime
命令显示当前时间/系统已经运行了多长时间/目前有多少登陆用户/系统在过去的一分钟,五分钟和十五分钟内的平均负载。 -
crontab
指令是循环任务,需要启动crond
这个服务。使用crontab -e
编辑任务内容,使用crontab -l
查看所有的任务,使用crontab -r
删除所有的任务。任务的形式为分 时 日 月 周 指令
。 -
/dev/null
是垃圾桶。 -
anacron
配合/etc/anacrontab
的设定,可以唤醒停机期间系统未进行的crontab
任务! -
PID
是进程号,PPID
是父进程号。 -
常驻在内存当中的进程称之为服务。服务一般结尾都有个“d”。
-
每个人进入 Linux 的环境设定都可以随着每个人的喜好来设定,通过
~/.bashrc
。 -
当登入环境时,我们就取得一个名为bash的PID,而在此环境下执行的指令,就是bash的子进程。
-
& 放在指令后面表示设置此进程为后台进程。不会被crtl+c中断,不用等待输入,但是可以被呼叫。
-
bash可以分为前景和背景,指令后加
&
就是让进程成为背景进程,使用jobs [-lrs]
查看背景状态,-l
列出所有背景进程的PID以及状态,-r
列出正在运行的进程,-s
列出暂停的进程。 -
使用
fg %jobnumber
将背景中的job拿到前景处理。%可有可无。 -
使用
bg %jobnumber
让背景中的进程在背景中继续运行。 -
kill -9
强制删除一个工作,kill -15
以正常方式终止一项工作。 -
当脱机后,背景的指令都会被停止,如果想让指令在你脱机后继续运行,可以使用
nohup
让它在系统背景中运行。 -
使用
ps -l
查看自己bash进程,使用ps aux
查看所有系统运作的进程。 -
ps
是撷取一个时间点的进程状态,top
则可以持续侦测进程运作的状态。 -
使用
top [-d 数字] | top [-bnp]
来动态观察进程的变化,-d
后面可以接秒数,就是整个进程画面更新的秒数,预设是5秒。-b
以批次的方式执行top,通常会搭配数据流重导向来将批次的结果输出成为文件。-n
与-b
搭配,意义是需要进行几次top的输出结果。-p
指定某些个PID来进行观察监测而已。在top执行过程中,按P
以CPU的使用资源排序显示,按M
以Memory的使用资源排序显示,按N
以PID来排序。 -
使用
pstree -[AU] [-up]
查看进程树,-p
显示PID,-u
显示所属账号名称。 -
使用
kill -l
查看可以给进程发送的信号列表。比如kill -9,9就代表强制中断一个进程,15代表正常结束一个进程,1是重新启动。kill -signal PID
。 -
如果要杀死某个服务的所有进程,使用
killall
。 -
使用
nice
为指令赋初始nice值,使用renice
调整进程nice值。 -
一个服务需要一个daemon进程,那些
{xxx}d
的程序一般就是daemon进程。 -
使用
systemctl
来管理服务。