一、日常使用命令/常用快捷键命令
开关机命令
1、shutdown –h now:立刻进行关机
2、shutdown –r now:现在重新启动计算机
3、reboot:现在重新启动计算机
4、su -:切换用户;passwd:修改用户密码
5、logout:用户注销
常用快捷命令
1、tab = 补全
2、ctrl + l -:清屏,类似clear命令
3、ctrl + r -:查找历史命令(history);ctrl+c = 终止
4、ctrl+k = 删除此处至末尾所有内容
5、ctrl+u = 删除此处至开始所有内容
常用工具命令
man:帮助命令
wc:文本统计统计
wordcount
3 5 29 a.txt
行数 单词数 字符数 文件名
常见参数:
-l:只查看行数
-w: 只查看单词数
-c:只查看字符数
du:文件大小统计
格式:du [选项参数] dir_path
常见参数:
-s:只统计该文件目录的大小,不递归
-h:人性化的显示单位
find:文件检索命令
语法
find path -option [ -print ] [ -exec -ok command ] {} \;
参数说明 :
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
-pid n : process id 是 n 的文件
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
实例
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出
# find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出
# find . -ctime -20
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
# find /var/log -type f -mtime +7 -ok rm {} \;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
# find . -type f -perm 644 -exec ls -l {} \;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} \;
二、常用目录/文件操作命令
1.展示目录列表命令ls(list)
ls 展示当前目录下的可见文件
ls -a 展示当前目录下所有的文件(包括隐藏的文件)
ls -l(ll) 展示当前目录下文件的详细信息
ll -a 展示当前目录下所有文件的详细信息
ll -h 友好的显示当前目录下文件的详细信息(其实就是文件的大小可读性更强了)
pwd:显示目前的目录
2.切换目录命令cd(change directory)
cd test 切换到test目录下
cd .. 切换到上一级目录
cd / 切换到系统根目录下
cd ~ 切换到当前用户的根目录下
cd - 切换到上一级所在的目录
3.目录的创建(mkdir)和删除(rmdir)命令
mkdir test 在当前目录下创建一个test目录
mkdir -p test/a/b 在test目录下的a目录下创建一个b目录,如果上一级目录不存在,则连它的父目录一起创建
rmdir test 删除当前目录下的test目录(注意:该命令只能够删除空目录)
4.文件的创建(touch)和删除(rm)命令
touch test.txt 在当前目录下创建一个test.txt的文件
rm test.txt 删除test.txt的文件(带询问的删除,需输入y才能删除)
rm -f test.txt 直接删除text.txt文件
rm -r test 递归删除,即删除test目录以及其目录下的子目录(带询问的删除)
rm -rf test 直接删除test目录以及其目录下的子目录
5.文件打包或解压命令tar
打包并压缩文件
Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。
命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件
其中:z:调用gzip压缩命令进行压缩
c:打包文件
v:显示运行过程
f:指定文件名
示例:打包并压缩/test下的所有文件 压缩后的压缩包指定名称为xxx.tar.gz
tar -zcvf xxx.tar.gz aaa.txt bbb.txt ccc.txt
或:tar -zcvf xxx.tar.gz /test/*
解压压缩包(重点)
命令:tar [-xvf] 压缩文件
其中:x:代表解压
示例:将/test下的xxx.tar.gz解压到当前目录下
tar -xvf xxx.tar.gz
示例:将/test下的xxx.tar.gz解压到根目录/usr下
tar -xvf xxx.tar.gz -C /usr------C代表指定解压的位置
Linux的权限命令
权限是Linux中的重要概念,每个文件/目录等都具有权限,通过ls -l命令我们可以 查看某个目录下的文件或目录的权限
文件的类型:
d:代表目录
-:代表文件
l:代表链接(可以认为是window中的快捷方式)
后面的9位分为3组,每3位置一组,分别代表属主的权限,与当前用户同组的 用户的权限,其他用户的权限
r:代表权限是可读,r也可以用数字4表示
w:代表权限是可写,w也可以用数字2表示
x:代表权限是可执行,x也可以用数字1表示
linux中用户的分类
小李 小李对象 老王
所有者u 同组用户g 其他人o
linux中文件权限
读r 写w 执行x 没有权限-
文件详情信息:
-rw-r--r--. 1 root root 5 Aug 28 02:27 a.txt
d rwx r-x r-x. 2 root root 4096 Aug 27 08:52 test
第一位:d:目录,-:文件
rw- r-- r--
所有者 同组用户 其他人
只有读写 只有读 只有读
1:该文件的链接数
root:文件所属者
root:文件所属组
5 Aug 28 02:27:最后的修改时间
修改文件/目录的权限的命令:chmod
示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限,
其他用户只有读的权限
chmod u=rwx,g=rw,o=r aaa.txt
上述示例还可以使用数字表示:
chmod 764 aaa.txt
修改文件的所属用户和所属组 chown
chown username:groupName aa.txt
chown username: aa.txt
chown :groupName aa.txt
-R:递归子目录修改所属者和所属组
三、文件/文件夹的cp rm及文件的查看
cp (复制文件或目录)
cp 即拷贝文件和目录。
语法:
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory
选项与参数:
-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r:递归持续复制,用於目录的复制行为;(常用)
-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-u:若 destination 比 source 旧才升级 destination !
用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc
[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖
rm (移除文件或目录)
语法:
rm [-fir] 文件或目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
将刚刚在 cp 的实例中创建的 bashrc 删除掉!
[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y
如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!
mv (移动文件与目录,或修改名称)
语法:
[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
复制一文件,创建一目录,将文件移动到目录中
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest
将某个文件移动到某个目录去,就是这样做!
将刚刚的目录名称更名为 mvtest2
[root@www tmp]# mv mvtest mvtest2
Linux 文件内容查看
Linux系统中使用以下命令来查看文件的内容:
cat 由第一行开始显示文件内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
head 只看头几行
tail 只看尾巴几行
你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。
cat
由第一行开始显示文件内容
语法:
cat [-AbEnTv]
选项与参数:
-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字节 $ 显示出来;
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
检看 /etc/issue 这个文件的内容:
[root@www ~]# cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m
tac
tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:
[root@www ~]# tac /etc/issue
Kernel \r on an \m
CentOS release 6.4 (Final)
nl
显示行号
语法:
nl [-bnw] 文件
选项与参数:
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在荧幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
实例一:用 nl 列出 /etc/issue 的内容
[root@www ~]# nl /etc/issue
1 CentOS release 6.4 (Final)
2 Kernel \r on an \m
more
一页一页翻动
[root@www ~]# more /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
--More--(28%) <== 重点在这一行喔!你的光标也会在这里等待你的命令
在 more 这个程序的运行过程中,你有几个按键可以按的:
空白键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f :立刻显示出档名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less
一页一页翻动,以下实例输出/etc/man.config文件的内容:
[root@www ~]# less /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
: <== 这里可以等待你输入命令!
less运行时可以输入的命令有:
空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;
head
取出文件前面几行
语法:
head [-n number] 文件
选项与参数:
-n :后面接数字,代表显示几行的意思
[root@www ~]# head /etc/man.config
默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:
[root@www ~]# head -n 20 /etc/man.config
tail
取出文件后面几行
语法:
tail [-n number] 文件
选项与参数:
-n :后面接数字,代表显示几行的意思
-f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
[root@www ~]# tail /etc/man.config
# 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:
[root@www ~]# tail -n 20 /etc/man.config
系统常用操作命令
vi sudo:编辑sudo命令的配置
编辑第98行
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
用户名 登录的主机=(以什么样的身份运行) 可以执行什么命令
如果想让huadian用户也居于root相关权限。。
huadian ALL=(root) NOPASSWD:service iptables status
huadian ALL=(root) NOPASSWD:service iptables start
推荐用法
huadian ALL=(root) NOPASSWD:ALL
使用权限:sudo service iptables status ----(检查防火墙状态)
- 网络管理:ping、ifconfig
服务管理命令:
service:必须掌握
格式:
service s_name start|stop|status|restart
linux系统所有自带服务名称:/etc/init.d/
常用:
关闭防火墙服务
service iptables stop
重启网络服务:
service network restart
mysql数据库服务的名称:
mysql版本低于5.5 mysqld
mysql版本高于5.5 mysql
chkconfig:设置是否开机启动 :必须掌握
判定是否开机启动
chkconfig iptables --list
2.3.4.5是on表示开机启动
设置
chkconfig iptables on|off
进程管理:ps
ps:查当前进程
查看java的进程
ps -ef | grep java
jps:==(ps -ef | grep java) 只有在linux中安装了JDK才能用
kill :杀死某个进程
kill -9 pid
端口管理
netstat:查看端口开放情况
-a:表示列举所有的连接、服务器监听
-t:列出所有tcp协议的服务
-u:列出所有udp协议的服务
-n:使用端口号来显示
-l:列出所有的监听
-p:列出所有服务的进程id(pid)
常用:netstat -atunlp
redhat的selinux安全机制
关闭selinux安全机制
vim /etc/selinux/config
SELINUX=disabled
重启机器生效
防火墙添加端口
firewall-cmd --add-port=8080/tcp --permanent (centos7.x)
firewall-cmd --reload
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT (centos.6.x)
/etc/rc.d/init.d/iptables save
service iptables restart
移除防火墙端口
firewall-cmd --permanent --remove-port=8080/tcp (centos7.x)
firewall-cmd --reload
/sbin/iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 7777 -j DROP (centos.6.x)
service iptables restart
计划任务
crontab -u root -e 创建定时任务,-u表示可以执行脚本的用
crontab -u root -l 查看定时任务
crontab -u root -r 删除定时任务
远程操作
ssh远程连接
ssh username@ip
sch 文件传输
scp -r /home/test username@ip:/home/user --把test目录传输到另外一台机器的user目录下
scp /home/test/con.fg username@ip:/home/user --把con.fg文件传输到另外一台机器的user目录下
scp username@ip:/home/user/test /c/test 将username@ip机器上的文件或目录复制到本机上
- Shell脚本自启配置
rc.local
系统启动后会启动 /etc/rc.d/rc.local 内配置的内容
在/etc/rc.d/rc.local 文件的末尾追加可执行脚本的路径,例如
/bin/sh /home/mywed/www/xx.sh
注:在centos7中 /etc/rc.d/rc.local的权限被降低 需要增加可执行权限
chmod +x /etc/rc.d/rc.local
chkconfig
在 /etc/.rc.d/init.d 目录下创建启动脚本,并赋予可执行权限,例如
chmod +x /etc/rc.d/init.d/xxx.sh
添加脚本到开机启动项中
cd /etc/rc.d/init.d
chkconfig --add xxx.sh
chkconfig xxx.sh on
注:
chkconfig 脚本启动需要在sh脚本头增加如下内容
#!/bin/sh
#chkconfig:2345 80 90
#decription:autostart
说明:chkonfig后面是启动级别和优先级,description后面是服务描述。如上面脚本意思是,
服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,停止的优先级是10。
优先级范围是0-100,数字越大,优先级越低。
注意:不添加以上内容的话添加启动项时会提示service myservice does not support chkconfig
# 缺省的运行级,RHS用到的级别如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启
# 对各个运行级的详细解释:
0 为停机,机器关闭。
1 为单用户模式,就像Win9x下的安全模式类似。
2 为多用户模式,但是没有NFS支持。
3 为完整的多用户模式,是标准的运行级。
4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本 电脑的电池用尽时,可以切换到这个模式来做一些设置。
5 就是X11,进到X Window系统了。
6 为重启,运行init 6机器就会重启。
- 创建service(centos7)
https://www.cnblogs.com/wutao666/p/9781567.html
在CentOS7下,已经不再使用chkconfig命令管理系统开机自启动服务和条件自定义脚本服务了,而是使用管理unit的方式来控制开机自启动服务和添加自定义脚本服务。在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等。这里介绍自定义脚本服务,如果想把自定义的脚本变成服务进程,都需要写对应的service配置文件,这样才能被unit所管理(注意:自定义开机自启动服务的.service配置文件必须放在/usr/lib/systemd/system这个目录下面)。服务类别又分为服务又分为系统服务(system)和用户服务(user)。
系统服务:开机不登陆就能运行的程序(常用于开机自启)。
用户服务:需要登陆以后才能运行的程序。
[unit]区块:设置管理启动顺序与依赖关系
Description=服务描述 | 给出当前服务的简单描述 |
Documentation=路径或url | 给出文档位置 |
After=服务.target或服务.service | 定义在某些服务之后启动。例如sshd服务启动必须在network.target sshd-keygen.service服务开启之后才能启动,可以使用如下命令查看sshd服务的配置 cat /usr/lib/systemd/system/sshd.service |
Before=服务.target | 定义在某些服务之前启动 |
Wants=服务.service | 弱依赖,表示等号填写服务启动或失败,不影响此配置文件服务的启动 |
Requires=服务.service | 强依赖,表示等号填写服务启动或失败,那么此配置文件的服务将启动失败 |
注意:如果After、Before、Wants、Requires等号后面需要填写多个服务可以用空格隔开。After和Before字段只涉及启动顺序,不涉及依赖关系。Wants字段与Requires字段只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的。
[Service]区块:设置启动行为
•启动命令
ExecStart=命令 | 定义启动进程时执行的命令 |
ExecReload=命令 | 重启服务时执行的命令 |
ExecStop=命令 | 停止服务时执行的命令 |
ExecStartPre=命令 | 启动服务之前执行的命令 |
ExecStartPost=命令 | 启动服务之后执行的命令 |
ExecStopPost=命令 | 停止服务之后执行的命令 |
所有的启动设置之前,都可以加上一个连词号(-),表示"抑制错误",即发生错误的时候,不影响其他命令的执行。例如:ExecStop=-/bin/sh /server/scripts/xx.sh
•启动类型 Type字段定义启动类型。它可以设置的值如下:
simple(默认值) | ExecStart字段启动的进程为主进程 |
forking | ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程(后台运行) |
oneshot | 类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务 |
dbus | 类似于simple,但会等待 D-Bus 信号后启动 |
notify | 类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务 |
idl | 类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合 |
•重启行为
KillMode字段,定义Systemd如何停止服务,它可以设置的值如下
control-group(默认值) | 当前控制组里面的所有子进程,都会被杀掉 |
process | 只杀主进程 |
mixed | 主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号 |
none | 没有进程会被杀掉,只是执行服务的 stop 命令 |
Restart字段,定义了服务退出后,Systemd的重启方式,它可以设置的值如下
no(默认值) | 退出后不会重启 |
on-success | 只有正常退出时(退出状态码为0),才会重启 |
on-failure | 非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启 |
on-abnormal | 只有被信号终止和超时,才会重启 |
on-abort | 只有在收到没有捕捉到的信号终止时,才会重启 |
on-watchdog | 超时退出,才会重启 |
always | 不管是什么退出原因,总是重启 |
•service区块的其他一些字段
EnvironmentFile=文件路径 | 指定当前服务的环境参数文件 |
RestartSec=数值 | 表示Systemd重启服务之前,需要等待的秒数 |
PIDFile=PID文件路径 | PID进程文件 |
KillSignal=信号量 | 停止信号量,值一般为SIGQUIT |
TimeoutStopSec=数值 | 停止超时时间 |
PrivateTmp=布尔值 | 独立空间true或false,即文件系统名字空间的配置将被该命令行启动的进程忽略 |
[Install]区块:定义如何安装这个配置文件,即怎样做到开机启动
这个设置非常重要,如果设置开机自启动,在/etc/systemd/system目录下面的multi-user.target.wants子目录之中机会创建一个服务的软链接
WantedBy字段,表示该服务所在的 Targe,target的含义是服务组,表示一组服务,它可以设置的值如下
multi-user.target | 表示多用户命令行状态 |
graphical.target | 表示图形用户状态,它依赖于multi-user.target |
配置文件目录
systemctl脚本目录 | /usr/lib/systemd/ |
系统服务目录 | /usr/lib/systemd/system/ |
用户服务目录 | /usr/lib/systemd/system/ |
例子
添加注册脚本服务文件(vim /usr/lib/systemd/system/syncd.service)(目录可以自己选择)
[Unit]
Description="这是rsync+inotify实时同步服务"
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/bin/sh /server/scripts/sync.sh start
ExecReload=/bin/sh /server/scripts/sync.sh restart
ExecStop=/bin/sh /server/scripts/sync.sh stop
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target
运行systemctl start syncd命令启动服务