可执行文件,全部人均可以使用。node
/sbin/linux
可执行文件,管理员才可用,有些文件也能够执行,但要指定目录,如:/sbin/ifconfig。正则表达式
以上两个目录可使用:echo $PATH,查看当前用户包含使用哪些目录的权限。shell
/usr/bin/ 和/usr/sbin/数据库
系统非必须文件,如:Apache。 二者区别:
1, /usr/bin/下全部人都须要执行的文件,例如vim,可使用which vim来查看目录。
2, /usr/sbin/下不是全部人都须要执行的文件,例如:Apache。vim
/dev/bash
保存大部分设备(硬件)文件。例如:/dev/sda:系统第一块sata硬盘。这个千万不要乱动。。。网络
/home/less
系统建立的非root用户的用户的家目录。编辑器
/lib/
库文件夹。
/lib/modules/
内核模块。内核放在:/boot/vmlinux-2.6.9-22.EL。固然你的系统多是其余版本。这里是2.6的版本。而/lib/modules/下是操做系统核心配套的模块,有以下文件:
/media、mnt
/proc/
当前内存中的值。若是不启动系统,就没有任何文件。
/var/
可变文件。如/var/log、/var/mail等。
/boot/
1.kernel
2.grub:放bootLoader。
/etc/
放配置文件。如:/etc/passwd。
/opt/
第三软件的目录。
/root/
root用户主目录。
/etc/inittab
配置是否启动图形界面。
id:5:initdefault: 改成 id:3:initdefault: 这样开机默认不启动图形界面。
startx
启动图形界面。
ctrl+alt+F1
第一个是图形界面,之前是F7是图形界面。
ctrl+alt+F2
启动第一个文本界面。
system-config-network
安装后网络默认不启动,上述命令是配置网络。eth0:为第一个网卡,后面一次类推。
service network restart:重启network. 配置重启后,ifconfig,发现eth0仍是没有启动。
这时用命令: vim /etc/sysconfig/network-scripts/ifcfg-eth0 保存了网卡eth0的配置文件。
Device not managed by NetworkManager:这个错误须要重启一下NetworkManager 服务,执行下面命令便可:
service NetworkManager restart
tab键
一下是补齐命令,两下是显示当前输入的全部候选。
man
--help
ls --help 查看帮助。
cd
cd .. 上级目录
cd - 回到上次跳转过来的文件夹
cd 或 cd ~ 回到当前用户主目录
pwd
查看当前所在目录。
touch
建立文件
↑、↓、history
查看执行过的命令。
ls -F 查看文件类型 可执行:* 。目录:带/。 ll
file
file /etc/passwd 能够查看文件类型
alias 查看别名
alias ii='ls -l' 定义别名:ii等于执行 ls -l,不会永久生效。
unalias ii :取消别名。
vi ~/.bashrc 而后把别名复制进去,保存退出。 别名永久生效。
mv
mv a b: 更名
mv a /tmp/c
cp
cp -r 复制文件夹
cp a /tmp/d
cp -r /etc/ /tmp/ 赋值文件夹
rm
rm -r 删除文件夹
rm -rf 不询问删除
cat
cat /etc/passwd
more
more /etc/passwd 按空格,只能顺序往下一页。
less
less /etc/passwd 上下翻滚均可以。
head
查看文件前10行,如:head text。
tail
查看文件末尾10行,如:tail text。
tail -f + 文件名
如:tail -f text ,动态查看文件,若是文件末尾有变化,会动持续动态展现,多用于查看部署日志,按ctrl+c退出查看。
vi
i:insert模式。
: 命令行模式。
u: undo,取消上次操做。
ctrl+r: redo,再作一次。
q
q! 也能够ZQ
wq 也能够ZZ
echo
echo aaaaaaaaaaaaa :屏幕打印aaaaaaaa
echo $HOME 查询变量 HOME的值。
echo $USER
返回USER变量的值。
AAA=sss
echo AAA :屏幕打印AAA
echo $AAA : 屏幕返回sss
su - ttt :切换到ttt用户 。exit 退出返回前用户
useradd
添加用户rick: useradd rick
passwd
更改rick用户密码:passwd rick。 (root用户能够随意更改,其余其余用户须要设置复杂密码,好比大小写数字字母组合等。)
useradd
useradd rick :添加用户rick
useradd rick都作了哪些操做呢?
vi /etc/passwd 打开这个文件,会发现添加了 rick的记录。用冒号分隔,其中第一个是用户名,x表明这个用户有登陆密码,若是把x删除,则这个用户不须要密码登陆,500是用户序号,501是组序号,501后面::中间位置是这个用户的备注,相似于comment,这里为空。而后/home/xxx是用户的主目录。再后面是登陆后的shell,这里/sbin/nologin是指不容许登陆,正常状况下应该是/bin/bash。这里说下,用户id和组id都是从500开始的,500以前是系统保留序号。
/etc/shadow
用于储存用户密码的文件。如图能够看到 xxx的密码是一串乱码,是用MD5加密过的。
两个$中间是个阈值,后面才是密码。后面:13822:是一个unix time,以1970年1月1日开始到如今多少天,1970年1月1日就是1。:0:表示密码的最短历史,若是是0,表示马上就能够更改密码,若是是1则表示一天后才能够更改密码。:99999:是密码最长历史,若是设置30,则表示密码30天过时。:7:表示密码过时前多少天通知你。:7:后面的冒号之间表明着密码过时后仍然可用的天数。最后两个冒号中间表明这个帐号禁用的unix time,若是最后是:1:,那么表明这个帐号1970年1月1日就禁用了。
以为以上记不住怎么办?
man 5 shadow, 能够查询shadow文件的具体意义。5,指配置文件。![]()
man 5 shadow
能够查询shadow文件的具体意义。5,指配置文件,上图。
vi /etc/group 在文件里添加用户的组,建立rick用户,同时出现一个rick的组。
/etc/group
组文件,能够看到xxx组,最后一个冒号后面是组成员,若是要在组内添加成员能够直接在对应组后面添加,如添加tom和lucy两个成员:xxx:x:501:tom,lucy。可是若是添加到root:x:0:root后面添加用户也不会使添加的用户成为管理员,由于linux只区分用户id为0和非0,而只有root用户id为0,其余都是大于500的,加入root组最可能是对某些文件的权限变大了,仍然没法成为管理员。
用于保存组密码,不多用。
/etc/login.defs
这个配置文件能够设置最短密码时间,最长密码时间,最短密码长度,密码过时提醒时间,最小UID,这里是500,最大UID,最小组ID(GID_MIN),最大组ID(GID_MAX)等。
mkdir /home/rick 建立用户目录。
cp -r /etc/skel/.* /home/rick/
chown -R rick.rick /home/rick/
passwd
userdel
groupadd
groupdel
gpasswd
组密码。
gpasswd -M rick,tom,lucy root
把多个用户指定到一个组,这里是把3个用户rick,tom,lucy加入到root组。 goupdel
usermod -G root,bin,todd rick 把rick指定到 root,bin,todd 组下面。若是再执行一下,usermod -G root rick 则rick只属于root组,其余组会被去掉。可用id rick来查看相关信息。
id rick
能够查看用于的uid,gid,groups,即用于id,组id和所属的组。
users
查看当前系统登陆用户。
who
查看当前登陆本机的用户及来源。如哪一个控制台登陆的,若是从外部访问到本机或者startx打开xwindow,就是pts,若是本地开启控制台就是tty。
w
查看当前登陆本机用户和运行程序。若是远程登陆能够看到ip,其余信息包括:登陆时间、空闲时间、运行时占cpu的时间、当前在运行什么命令,若是想要强制让登陆者退出可使用:skill -9 pts/3,这样登陆在pts/3的用户就被断开了。
write
能够写信息给其余登陆用户。mesg:是否能够给别人写消息。
wall
给全部人写消息,例如: wall time for eating。
last
查看用户的登陆日志。
lastlog
查看每一个用户最后登陆的状况。每一个用户最后登陆的时间。
finger
如:finger rick,查看用户信息。查看用户信息和最后登陆时间。
ls -al
分别是文件类型(第一个字符)、所属者权限(3个字符,r:读,w:写,x:执行)、组权限(3个字符)、其余人权限(3个字符)、连接数、所属者、所属组、连接数、全部者、全部组、文件大小、修改时间、文件名。
inode
inode(发音:eye-node)译成中文就是索引节点,它用来存放档案及目录的基本信息,包含时间、档名、使用者及群组等。
stat a:能够查看文件a的inode。
ln a b :建立一个b的硬连接,指向a只想的文件。 ln -s a b : 建立一个b的软链接。
硬连接:不能跨分区,不能给目录作硬连接。做用:防止文件被误删。
软链接:能够跨分区,能给目录作软链接。ln -s /etc eee:对文件夹/etc作软链接,访问eee就进入文件夹。
chmod
chmod u+x A :对A添加执行权限。
chmod go+x A :表示给group和others添加x权限。
chmod a-x A:给全部人减掉执行权限。
chmod a=rw A: 给全部人的权限设置成rw,即读写。
chmod -R g+w /tmp : 对/tem下全部文件和文件夹赋予所属组的读权限。
u、g、o、a分别表明:u:全部者。g:group,组。o:others,其余用户。a:all,全部人。 +、-和rwx组合进行设置权限。 chmod 777 A:对全部人赋予A文件的读、写、执行权限。4:读。2:写。1:执行。加起来就是对应的权限,三个7分别表明,全部者,所属组,其余人的权限。
chmod 046 A:假设文件全部者时rick,那么rick对A文件有什么权限?
答案是:没有任何权限,虽然所属组有读的权限,可是权限不会叠加。
chown
chown rick b:把b文件的拥有者改成rick。
chown rick.root b:把b文件的拥有者改成rick,拥有组改成root组。
chown .root b 或 chown :root b:只把b文件的拥有组改成root组。
chgrp root b:等价于上一句,只把b的拥有组改成root组。 chown -R rick.root /tmp/ :把tmp文件夹下全部文件的拥有者改成rick,拥有组改成root组。
ls -ld testdir/
-d : 看文件夹的权限。
文件夹权限:
r : ls,在文件夹下ls的求权限,固然若是只有r权限,无法ls,由于没法cd进去。
w :
1, touch a,在文件夹下建立文件的权限。
2,随意改写(vi、vim)其余人的文件的权限,若是修改后wq不行,能够wq!:强制保存退出。
3,rm :删除其余人文件的权限。
x : cd,能不能cd到该文件夹下的权限。
r-x : cd、ls,权限。
-wx : cd、touch、rm(self、others)、vi(self、others)修改本身和别人的文件。
-wxt :cd、touch、rm(self)、vi(self),只能删除、修改本身的文件。
如何加t权限?
chmod o+t testdir/ 或 chmod 1703 testdir/ :对others(其余用户)赋予文件夹testdir/的t权限。这时ls -ld testdir/ 以下:
drwx----wt,原来的x变成了t。
其实从x权限变为t权限,权限是变低了。
其实能够看/temp文件夹的权限:
ls -ld /temp : 权限是 rwxrwxrwt,这就是t权限的一个例子,由于临时文件夹,全部用户均可以保存文件,运行文件,可是当前用户不能影响其余用户,因此不能是x权限,即:不能删除、修改其余人的文件。
其余权限:
SUID(强制位)、SGID(冒险位)、Sticky
umask
建立者 | 默认文件夹权限 | 默认文件权限 |
---|---|---|
root | 755 | 644 |
others | 775 | 664 |
root用户下输入umask,会发现返回值是0022。其余用户登陆下umask返回是0002。因此根据每一个用户的umask能够判断每一个用户建立的文件和文件夹的默认权限。例如:root建立的文件夹是755权限,加上022,正好是777,建立的文件夹是644,加上022,是666。而others的umask是0002,因此others建立的文件夹应该是777-002,就是775,而others建立的文件的权限是666-002,是664。
查看umask值:
vi /etc/bashrc
编辑命令包括:ed、sed、emacs、vi、vim等。这里主要介绍vim。
/bin/vi 和 /usr/bin/vim, VIM : Vi IMproved,简单来讲vim就是vi的升级版。不过不少系统vi是有alias(别名),因此执行vi就是执行vim,而有些系统(如:RHEL5)没有这个别名,这点须要注意。能够经过:alias命令查看别名。
命令模式
vim /tmp/aaa,刚进入vi和vim之后是命令模式。
vim进入输入(insert)模式命令:
i: 在光标当前位置进入输入模式。 若是先按一个数字,如,5i:5再按i,输入:hello,那么按esc退出后会输入5个hello。
I: 在光标所在行的头部进入输入模式。
a: 在当前光标的下一个字符进入输入模式。
A: 在当前光标所在行的末尾进入输入模式。
o: 在当前光标所在行之下开启新的一行进入输入模式。
O: 在当前光标所在行之上开启新的一行进入输入模式。
s: 删除当前光标所在字符,进入输入模式。
S: 删除光标所在行,进入输入模式。
其实以上记住i就能够了,其余看兴趣。
u: undo,若是操做后想回滚,能够按u。
ctrl+r: redo,保留前一步的undo,好比删除了,按u取消删除,可是又想删除了,就按ctrl+r:redo。
:e! : 放弃对当前文件的全部修改。
r: 替换一个当前光标所在位置的字符。
R: 一直替换字符,直到按esc退出为止。
0: 到当前行头部。
$: 到当前行的末尾。
G: 到文件末尾。
数字+G: 到文件的第几行,如,10G:到文件的第10行。
:10 : 冒号+数字也是跳转到那一行。 ctrl + G : 在最下面显示文件一共多少行,如今位置的百分比。
w: 一次向后移动一个单词。
[ : 移动到上一段。
] : 移动到下一段。
ctrl + b: 向上翻一页。
ctrl + f: 向下翻一页。
ctrl + u: 向上翻半页。
ctrl + d: 向下翻半页。
ctrl + y: 向上翻一行。
ctrl + e: 向下翻一行。
/:正向查找,从文件头开始查找,如:/test,查找test。
? : 反向查找,?test,如上例。
n: next,查找下一个符合条件的字符,与"/"和"?"组合使用。
N: 查找上一个,与"/"和"?"组合使用。
:set ignorecase: 查找忽略大小写。 :set noignorecase: 查找不忽略大小写。
x: 删除一个字符,3x:删除3个字符。 dd: 剪切一行,也能够当作删除,3dd : 剪切3行。
dw: 剪切一个单词,5dw : 剪切5个单词 yy: 复制一行,3yy : 复制3行。
p: 粘贴。 "byy : 在光标所在位置复制1行到剪切板b。 "5ayy : 表示使用剪切板a,在光标所在位置复制5行到剪切板a。
"ap : 把剪切板a中的内容粘贴出来,也就是指上面复制的那5行内容。
"bp : 把剪切板b中的内容粘贴出来,也就是上面复制的那一行内容。
:q : 退出(命令行模式)。
:q! : 强制退出(命令行模式)。
:wq : 保存修改并退出(命令行模式)。
:wq! : 强制保存修改并退出(命令行模式)。
ZQ : 不保存退出(命令模式)。
ZZ : 保存退出(命令模式)。
vim命令行模式
":" : 冒号进入命令行模式。
:set nu : 显示行号,只有这次生效。
:set nonu : 取消显示行号。
:set ruler : 在底部显示光标所在行列的数值。
:set autoindent : 正文自动缩进。
:20 :也能够跳转到目标行,此例跳转到20行。
:q : 未作更改退出。
:q! : 放弃更改,强制退出。
:w :写入。
:w! : 强制写入。
:wq : 保存修改并退出。
:wq! : 强制保存修改并退出。
:w + 文件名 : 写入其余文件,如,":w a.test",就会在当前目录新生成一个a.test文件,保存这个文件的修改内容。
:w >> a.test : 追加写入,若是要在已存在的文件末尾进行追加写入,能够用。
:1,5 w >> a.test :当前文件第1行到第5行追加写入文件a.test。
:1,$ w >> a.test : 这里%表明最后一行,即,从第一行到最后同样。
r : 在当前光标位置读入文件,例如,":r /etc/test",就会把/etc/test文件读入到当前光标的位置。
r !ls : 能够把ls命令读取到当前光标位置。
e + 目标文件名 : 放弃修改文件,打开目标文件。
:e! : 放弃对当前文件的全部修改。
:1,$s/source/target/g : 1,$表示第一行到最后一行,s,是s型替换source,表明要被替换的字符串。target,表示替换成什么字符串。g,表明不询问,直接替换。
复制代码
:1,$s/source/target/c : 询问替换,替换按y,不替换按n。其余和上面命令同样。
vim -o /tmp/a /tmp/b :同时打开两个文件,横屏展现。
ctrl + w + ↓ : 切换到下面文件的窗口。
vim -O /tmp/a /tmp/b : 同时打开两个文件,竖屏展现。
~/.vimrc 文件是vim的配置文件。若是想要让每次进入vim让一些命令都生效,能够配置此文件。
好比要配置每次vim之后文件都显示行号,则在~/.vimrc里面添加命令":set nu",而后":wq",保存退出便可。
通常查找可执行文件,如:which ls,执行结果以下图,能够看到返回连个ls命令,能够看到优先执行的事alias的ls。其余例子:which vi、which cd等等。
which查找范围是以下文件夹,通常是存放可执行文件的,因此查找普通文件不该该是用which。
除了查找可执行文件,也能够查询少许其余文件,除了查找文件位置,还会显示帮助文档位置。如,whereis ls,以下图,不但显示ls位置,还显示帮助文档位置,下面两行也能够看出whereis的查找范围,仍然是那几个可执行文件的目录。
快速查找,可是须要查询数据库。今天新加入的文件通常再也不数据库中,会查不到,可是历史文件能够快速查找到,若是要查找今天的文件能够先更新数据库:
updatedb
复制代码
而后在查找。
locate file_name (精确查找)
locate -r '.*file_name.*' (模糊查找包含file_name的文件,-r:使用正则表达式。)
复制代码
若是没有更新数据库则会提醒:
题外话,/etc/cron.daily/文件夹天天都会执行,其中就包括updatedb的命令,以下图:
locate和slocate区别:可使用命令:
ls `which locate` -l
复制代码
从上面能够看出,locate是slocate的一个软连接。
find [路径] [参数] [表达式]
find / -name file_name (精确查找)
find / '*file_name*' (模糊查找包含file_name的文件,注意和locate模糊查找的区别。)
以上两条命令表示从根目录/开始查找
复制代码
展现文件详情:
find /etc -name "*network*" -ls
复制代码
展现文件类型:
find /etc -name "*network*" -exec file {} \;
复制代码
find /home -name "*file_name*" -ok rm {} \;
复制代码
-ok表示询问,这里表示询问是否删除,若是是-exec就不询问直接删除了。
查找所属用户的文件:
find /home -user user_name -ls
复制代码
复杂查询
find /home -user user_name -o -group gourp_name -a -type d
复制代码
-o表明or,-a表明and,-type能够指定查找的文件类型,d表示文件夹(若是是f则表示文件)。那么上面语句的意思就是: 在/home文件夹下查找文件全部者(-user)是user_name或者(-o)文件全部组(-group)是group_name而且(-a)文件类型是文件夹(-type d)的文件。
其余参数:
find / [-user -type -name -group -perm(权限) -size -mtime] [-ok|exec] [ls|rm等]
复制代码
查询系统中权限是777的危险文件夹:
find / -perm -777 -type d -ls
复制代码
复习一下:
查询文本内容,如a.text文件中有hello字样,能够查找hello而不是文件名。
在etc目录下查找包含shrek字样文件内容的文件,若是一个文件出现屡次,也会多行展现。
grep -R shrek /etc
复制代码
grep -R -l shrek /etc
复制代码
compress uncompress gzip gunzip zip unzip tar
gzip file_name
bzip2 file_name
复制代码
源文件会被删除,生成一个file_name.gz或file_name.bz2文件,bzip2压缩比例高于gzip。
gunzip file_name
gzip -d file_name
bunzip2 file_name
bzip2 -d file_name
复制代码
解压文件。
tar cvf /tmp/target_package.tar /tmp/source_file1 /tmp/source_file2 /tmp/source_dir/ (后面可继续追加)
复制代码
将文件/tmp/source_file1和文件/tmp/source_file2和文件夹/tmp/source_dir/打包成/tmp目录下的target_package.tar文件。后面能够罗列更多须要打包的文件和文件夹。
打包并压缩:
tar cvfz /tmp/target_package.tar.gz /tmp/source_file1 /tmp/source_file2 /tmp/source_dir/ (后面可继续追加)
tar cvfj /tmp/target_package.tar.bz2 /tmp/source_file1 /tmp/source_file2 /tmp/source_dir/ (后面可继续追加)
复制代码
z表明gzip压缩,j表明bzip压缩。
拆包并解压缩:
tar xvfz /tmp/target_package.tar.gz /target_dir
tar xvfj /tmp/target_package.tar.bz2 /target_dir
复制代码
z表明gzip压缩,j表明bzip压缩。
tar rvf /tmp/target_package.tar /tmp/source_file1 /tmp/source_file2 /tmp/source_dir/ (后面可继续追加)
复制代码
/tmp目录下原来有一个target_package.tar文件,想继续将其余文件追加到这个包里面,用上面命令。
tar xvf /tmp/target_package.tar (解压到当前目录)
tar xvf /tmp/target_package.tar -C /tmp/target_dir/ (解压到指定目录/tmp/target_dir/)
复制代码
tar tvf /tmp/target_package.tar 查看打包文件
tar tvfz /tmp/target_package.tar.gz 查看打包压缩文件
tar tvfj
复制代码
查看目标包内容。
cut -d: -f1 /etc/passwd
复制代码
cut切割文件/etc/passwd,"-d:" 表明以冒号为分隔符;f1表明取第一列。
grep root /etc/passwd | cut -d : -f7
复制代码
查看用户root用的是哪一个shell。
cut -c1-3 /etc/passwd
复制代码
取第1到第3个字符。
sort -t: +2 -n /etc/passwd
复制代码
sort排序,将文件/etc/passwd文件,"-t:" 按照逗号分隔,"+2",第三列;"-n",按照数字方式排序。
sort -t: +2 -n /etc/passwd > /tmp/test
复制代码
将结果输出重定向到/tmp/test文件里。
能够经过top命令查看cpu目前运行状况。其中load average后面3个数字分别表示过去1分钟、5分钟、15分钟cpu的平均负载状况。
平均负载:单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。
可运行进程:是指正在使用CPU和正在等待CPU的进程,就是咱们经常使用ps命令查看的处于R状态(Running和Runnable)的进程。
不可终端状态:是指正处于内核态关键流程中的进程,而且这些流程是不可打断的。好比最多见的是等待硬件设备的I/O响应,也就是咱们用ps命令看到的处于D状态(Uninterruptible Sleep,也成为Disk Sleep)的进程。
平均负载,能够简单理解为平均活跃进程数,但实际上指的是活跃进程数的指数衰减平均值。
举个例子:当平均负载为2时,若是在2个cpu的系统上,那么说明2个cpu正好彻底被占用。若是在4个cpu的系统上,则说明cpu50%占用、50%空闲。以此类推。
查看系统是几核cpu:
grep 'model name' /proc/cpuinfo |wc -l
复制代码
2.能够查看文件:
vi /proc/cpuinfo
复制代码