linux 命令总结
ctrl+alt+F1 返回F1终端
ctrl+alt+F2 切换到终端2 类似一直可以切换到F6(共6个终端)
exit 退出当前用户
init 0 关闭系统
su - root 切换当前用户(管理员账号)
pwd 查看当前路径
id 当前用户信息
who 当前登录所有用户
whoami 当前登录用户信息
:0 图形界面
pts 图形界面打开的终端
tty 命令行登录的终端
date -s ‘2018-05-25 11:23’ 修改系统当前时间
date 082611282018 #按照 ‘月日时分年’ 的格式
cal 10 2015 查看日历
man - ls 查看命令使用方法
ls --help 查看命令使用方法
clear
ctrl+L 清除屏幕
useradd tom 添加用户
userdel -r 删除用户
passwd #root可以修改任何用户密码,普通用户只能修改自己的密码
echo '123' | passwd --stdin tom 强制给用户更改密码
cd (change directory) 切换文件目录
~ 当前用户家目录
. 当前目录
.. 代表上一层目录
../.. 上一级目录的上一级目录
- 代表上一次目录
touch 新建文件
mkdir 新建文件夹/目录
-p 递归建目录(即可以创建系统没有的目录)
rm 删除文件
-r 删除目录
–rf 强制删除文件、目录
ctrl+A 定位到命令行开头
ctrl+E 定位点命令行结尾
ls 查看当前目录文件
-l 查看当前目录详细信息
-l -d 查看目录本身的信息,可简写为 ll -d
-a 查看所以文件,包括隐藏文件
-h 显示文件大小
cp 源路径 目标路径 复制文件或目录
cp -r 递归拷贝,用来拷贝目录
cp -a 拷贝文件及文件的详细信息
mv 剪切命令,同时可以用来重命名
alex.txt asb.txt 重命名
cp 使用最原始的cp命令,即强制拷贝
which cp 查看cp命令信息
cat 查看文件内容,读取全部文件内容
head -n 查看文件前n行内容
-n +23 从第23行开始,显示文件n行内容
tail -n 查看文件后n行内容
-f 只读的方式,实时查看文件内容
more /file1 以百分百的方式查看文件内容
less /file1 以上下翻页的方法查看文件内容
> 文件 将左边内容以覆盖的方式添加到右边的文件中
>> 文件 将左边内容以追加的方式添加到右边的文件中
echo 'hedeyong_linux'>> /FtpServe/bin/start.py 往start.py文件追加内容
echo 'hedeyong_linux'> /FtpServe/bin/start.py 以覆盖的方式往start.py文件添加内容
useradd user1
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。/bin/bash 或:sbin/nologin不可登录
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
#创建一个用户时,系统创建的文件
/etc/passwd 存放用户的信息,一行为一个用户信息
/etc/shadow 存放用户的密码文件
/etc/group 存放组信息
/etc/gshadow 存放组密码
/home/user1 用户家目录,需要用mkdir命令创建
/var/spool/mail/user1 用户的邮箱,需要用touch命令创建
root的用户信息:
root:x:0:0:root:/root:/bin/bash
root:用户名
x:密码占位符 密码文件 /etc/shadow
0:userid
0:groupid
root:用户的描述信息,可有可无
/root:用户的家目录
/bin/bash : 标识该用户是否可登录,/bin/bash可登录 /sbin/nologin不可登录
组文件:/etc/group
wheel:x:10:egon,user1
wheel:组名
x:组密码占位符
10:组id
egon,user1:组成员。可通过vim编辑添加组成员
vim 编辑文件
a 进入编辑模式,然后可通过上下键选择
esc 推出编辑
yy 复制文件或目录
p 粘贴
dd 删除文件
G 调到最后一行
shift+: 输入命令
wq 保存退出
wq! 强制保存退出
usermod 修改用户账号的各项设定
-c<备注> 修改用户帐号的备注文字。
-d登入目录> 修改用户登入时的目录。
-e<有效期限> 修改帐号的有效期限。
-f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。
-g<群组> 修改用户所属的群组。
-G<群组> 修改用户所属的附加群组。
-l<帐号名称> 修改用户帐号名称。
-L 锁定用户密码,使密码无效。
-s<shell> 修改用户登入后所使用的shell。
-u<uid> 修改用户ID。
-U 解除密码锁定。
-a 追加,例如:usermod user1 -a -G group2 为用户user1的附加群组追加一个group2的群组
usermod -a -G group2 user1
groupadd 创建一个组
-g: 指定新建工作组的id;
groupmod 功能说明:更改群组识别码或名称。
语 法:groupmod [-g <群组识别码> <-o>][-n <新群组名称>][群组名称]
groupmod -n linux linuxso 将linuxso组改名为linux
groupdel 删除组
文件权限信息:
-rw-r--r--. 1 root root 2262 5月 24 19:39 /etc/passwd
第一段内容:代表文件类型
- 普通文件
d 目录文件
b 块文件
l 链接文件
p 管道文件
s socket文件
rw-r--r--表示:
r:read 可读 对应数字 4
w:write 可写 对应数字 2
x:execute 可执行 对应数字 1
-:占位符 对应数字 0
前面三位对应的文件的属主对该文件的权限
中间三位对应的文件的属组对该文件的权限
后面三位对应的文件的其他人对该文件的权限
对文件:
读:可以读文件的内容
写:可以修改文件的内容
执行:可以把文件当做程序去执行 #需要有可读权限
对目录:
读:可以浏览到该目录下的子目录和子文件名
写:可以在该目录下新建文件,删除文件,重命名文件
执行:可以cd进去改目录
chown 修改文件属主和组信息(即组权限)
-R 递归修改目录
chown egon:egon /home/oldboy 更改oldboy用户的属主和组信息
chmod 更改文件权限
-R 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
chmod u=r,g=-,o=r egon.txt #u:属主 g:组 o:其他人 a:表示三者 -表示什么权限都不给
chmod a=rwx file 和 chmod 777 file 效果一样
chmod u+x ex1.py 将 ex1.py 设定为只有该档案拥有者可以执行
sh egon.txt 执行文件的内容
./ echo.txt 验证文件内容
cat.a.txt b.txt > c.txt 将a.txt b.txt 合并成一个文件
touch {a..c}{1..3}.txt 快速创建文件(a1.txt a2.txt a3.txt b1.txt b2.txt b3.txt c1.txt c2.txt c3.txt)
tar 归档命令
c 创建一个新的tar文件
t 列出tar文件中目录的内容。
x 从tar文件中抽取文件。
f 指定归档文件或磁带(也可能是软盘)设备(一般都要选)。
v 显示所打包的文件的详细信息,v是verbose的第1个字母。
z 使用gzip压缩算法来压缩打包后的文件。
j 使用bzip2压缩算法来压缩打包后的文件。
tar -cvf arch.tar arch 将arch目录打包成一个名为arch.tar的归档文件
tar -cvf my.tar /etc /root/an.cfg 将 /etc/ 目录和 /root/an.cfg 文件打包进去为my.tar
tar -cvf /tmp/test test.tar * 将该路径下所有文件打包至/tmp/test
tar -cvf /tmp/etc.tar /etc 将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar仅打包,不压缩!
tar -zcvf /tmp/etc.tar.gz /etc 将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar打包后,以 gzip 压缩
tar -jcvf /tmp/etc.tar.bz2 /etc 将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar打包后,以 bzip2 压缩
tar xvf test.tar 解压打包文件
tar xvf /tmp/test.tar –C /test2 将/tmp下test.tar文件解压至/test2目录下
tar xvf /tmp/test.tar.bz2 –C /test2 将/tmp下test.tar.bz2文件解压至/test2目录下
gzip test.tar.gz 用gzip方式压缩
gunzip test.tar.gz 用gzip方式解压缩
bzip2 test.tar.bz2 用bzip2方式压缩
bunzip2 test.tar.bz2 用bzip2方式解压缩
vi 编辑器
vim 文本路径 #只能打开文本文件
进入命令行模式
a/A 进入插入模式并在光标之后进行添加。
i 进入插入模式并在光标之前进行插入。
o 进入插入模式并在当前(光标所在)行之下开启新的一行。
esc 返回命令行模式
命令行模式:
G 转到文件末尾 数字n+G 跳转至第n行
gg 转到文件开头
H 跳到当前屏幕最上方的第一个字符
M 跳到当前屏幕中间一行的第一个字符
L 跳到当前屏幕最下方的第一个字符
$ 转到行尾
0 转到行首
yy 复制 先按数字3,再按yy,复制三行
P(大写) 在下一行粘贴 先按数字n,再按p ,粘贴n行
p 在上一行粘贴 先按数字n,再按p ,粘贴n行
dd 删除 先按数字n,再按dd ,删除n行
u 撤销当前操作
ctrl+r 恢复一步操作
/bash +n 查找含bash文件,按n跳转
扩展模式
shift+: 进入扩展模式,esc 返回命令行模式
w 保存
q 退出(不保存) q!强制退出并保存
wq 保存退出
wq! 强制保存退出
s 修改当前行
%s 表示所有行,即全文
g 一行的所有内容
%s /python/PYTHON/g 将全篇文章的python替换成PYTHON
init 0 关机
init 1 以root用户进入单用户模式
init 2 多用户模式,但没有启用网络功能
init 3 多用户 文本终端
init 4 多用户自定义模式,开发使用
init 5 多用户 图形界面
init 6 重启
关闭系统的命令:
shutdown -h now
halt
poweroff
init 0
重启系统的命令:
shutdown -r now
reboot
init 6
Ctrl+Alt+Delete键
单用户模式修改root用户密码
1)重启按e 进入进入到GRUB启动菜单
2)找到单用户配置文件 (开头:linux16 /Vmlinuz-3.10
3)删除rhgb quiet 设置
4)在UTF-8后面输入:init=/bin/sh
5)ctrl+x 重启
6)输入:monut -o remount,rw /
7)vi/vim 进入/etc /passwd 删除root用户密码占位符
或者echo ‘abc123’ | passwd –stdin root 给root用户重置密码,
8)输入 touch /.autorelabel 更新系统信息
9) 输入 exec /sbin/init 重启系统
系统监控
top 查看CPU和进程状态
free 监控内存 以kb为单位
free –w buffer cache 分开计算
free –m 监控内存 以Mb为单位
buffer 缓解内存和硬盘之间的速度差, 为一些将要写入内存但还没有写入的数据
cache 已经写入内存,为方便再次取用而缓存的一些常用数据
ps 用来显示当前进程的状态。
Ps –aux 显示所有的与用户相关的完整信息
ps aux | head -3 查看前三条
ps aux | grep ‘firefox’ head -3 查找firefox的进程 (grep 过滤)
ps –elf 查看进程,并查看父进程id号
pgrep 通过名称或其他属性查找进程
pgrep firefox 查找名为firefox的进程
kill -9 11727 强制杀死进程号为11727的进程
-9 强制杀死
pkill -9 进程名 按进程名杀
pstree 进程名/进程号 查看进程树
echo $[1+2] 简单计算
uname –r 查看系统内核版本
uname –a 查看系统内核版本
cat /etc/redhat-release 查看系统版本
while :;do free ;slepp 1;clear;done 每秒查看一次内存,并清屏
echo 3 > /proc/sys/vm/drop_caches 清除缓存cache
top & 后台运行
df 显示文件系统中磁盘使用和空闲区的数量
–h 以G为单位查看
-i 以文件数查看
-T 查看文件类型
-a 显示所有磁盘
du -sh /etc 统计/etc的文件夹大小
dd if=/dev/zero of=/a.txt bs=200MB count=1 测试硬盘读写速度
0
fdisk 创建磁盘分区。
-d 删除一个(已经存在的)分区,其中d是delete的第1个字母。
-l 列出(已经存在的)分区的类型,其中l是list的第1个字母。
-m 列出fdisk中使用的所有命令,其中m是menu的第1个字母。
-n 添加一个新的分区,其中n是new的第1个字母。
p 主分区
e 扩展分区
l 逻辑分区
-p 列出分区表的内容,其中p是print的第1个字母。
-q 退出fdisk,但是不存储所做的变化,其中q是quit的第1个字母。
-t 改变分区系统的id,其中t是title的第1个字母。
-w 退出fdisk并存储所做的变化,其中w是write的第1个字母。
fdisk -l /dev/sda 查看第一块硬盘分区信息
mkfs 格式化磁盘
mkfs.ext4 /dev/sdb1 将分区/dev/sdb1格式化为ext4文件系统
mkfs.xfs /dev/sdb1 将分区/dev/sdb1格式化为xfs文件系统
mkswap /dev/sdb2 使用 mkswap 命令将/dev/sdb2设置交换分区
swapon /dev/sdb2 启用交换分区
swapon -s 查看交换分区的状态
挂载的定义:挂载指将一个设备(通常是存储设备)挂接到一个已存在的目录上。
mount 实现文件系统的挂载。
mount /dev/sdb1 /wg 将/dev/sdb1分区挂载到/wg目录上的命令
umount 实现文件系统的卸载。
umount /wg 卸载/wg上的文件系统的命令:
-l 强制卸载
yum install net- tools -y yum下安装net工具包
iptables -F 清空防火墙网络规则
setenforce 0 表示临时关闭selinux防火墙 (执行这两条命令会断网)
ifconfig 临时设置ip地址(重启失效)
ifconfig ens33 101.5.210.1/24 将ens33网卡设置ip地址为101.6.210.1,子网掩码为:255.255.255.0
ifconfig ens33:0 101.5.210.1/24 设置虚拟网卡
ifconfig ens33 down 关闭网卡
ifconfig ens33 up 启动网卡
cd /etc/sysconfig/network-scripts/ 网卡配置文件存放路径,修改配置文件可永久修改ip地址
vim ifcfg-ens33 修改网卡配置文件
HWADDR=
TYPE=
BOOTPROTO=static
IPADDER=
NETMASK=
GATEWAY=
DNS1=
DNS2=
NAME=
UUID=
ONBOOT=YES
systemctl restart network 重启网络状态
systemctl status network 查看网络状态
systemctl stop network 关闭网络
systemctl start network 开启网络
route-n 查看网关
vim /etc/resolv.conf 修改dns配置文件
nameserver 166.111.8.28 #添加dns配置信息
nameserver 166.111.8.29 #添加dns配置信息
vim /etc/hosts 本地解析,指定解析服务器,优先级高于resolv
166.111.8.28 www.baidu.comm 制定166.111.8.28服务器解析www.baidu.com域名
route add default gw 101.5.210.1 dev ens33 #为网卡ens33增加网关101.5.210.1
route del default gw 101.5.210.1 dev ens33 ##删除网卡ens33的网关101.5.210.1
软件包管理
rpm :二进制格式软件包
rpm –ivh 安装rpm包
–i 安装(Install)软件。
–U 升级(Upgrade)旧版本的软件。
–e 移除/删除(Erase)软件。
–v 显示详细的处理信息。
–h 显示安装进度。卸载不能用
-q zsh 查看zsh软件包是否安装成功
-qa 显示目前操作系统上安装的全部软件包
-qa | grep zsh
-ql 查看软件包安装路劲
-qi 查看安装软件包的详细信息
-qf 查看某一个文件是哪个软件包产生的显示这个文件是由哪个软件包安装的
rpm –e zsh 卸载zsh软件包
rpm –e zsh --nodeps 忽略依赖性,强制卸载zsh包
rpm –ivh zsh --force #在已安装软件包的情况下,强制安装,即手动更新。
rpm -ivh http-* #下载以http开头的所有软件包
yum:自动解决依赖性安装二进制软件包
mount /dev/sr0 /media #将光盘挂载到/media目录下
yum –y install 软件名 掌握使用yum安装软件
yum –y remove 软件名 掌握使用yum删除软件
yum –y groupinstall 组件名 掌握使用yum安装组件
yum –y groupremove 组件名 掌握使用yum删除组件
yum clean all 掌握清除yum缓存
yum search 使用yum查找软件包
yum - y erase apr 卸载apr软件包
yum - y install http* 下载以http开头的所有软件包
cd /etc/yum.repos.d 查看yum网络源配置文件 (vim Cent_Bas.repos)
cd /media/repodata
自己手动配置yum云:
源目录: /media
cd /etc/yum.repos.d
vim tset.repo
[标题:test]
name=shoudong peizhianzhaung yuan
baseurl=file:///media
enable=1
gpgcheck=0
yum install httpd 配置完成后即可安装
手动关闭yum自动更新
vim /etc/yum/yum-cron-hourly.conf
download_updates = no #参数yes改为no
vim /etc/yum.conf
cachedir=/缓存地址
keepcache=1
手动配置yum缓存
yum makecache -y
mkdir /my_repo #创建自己的配置源
cp /rpms/base/packages/* /my_repo #将软件包拷贝到自己的配置源
手动配置依赖性关系
rpm -ivh createrepo-0.9.9-23.rpm 安装createrepo命令工具
createrepo /my_repo/
vim /etc/yum.repos.d/http.repo
[httpd]
name=httpd
baseurl=file:///my_repo
enable=1
gpgcheck=0
yum grouplist 查看yum软件包组
yum -y groupinstall "systemtools" 安装systemtools软件包组
手动配置python3.6 须先安装开发工具、zlib-*系列包
yum install lrzsz 安装lrzsz软件包,用来向虚拟机传输数据
tar -xvf Python 解包,完成后自动创建一个Pytho的目录
./python/configure --prefix=/usr/local/python3.6 进行安装初始化,并创建安装路径
make 编译命令
make install 编译安装
源码安装
1、命令:yum -y groupinstall "开发工具" #安装开发工具
2、命令yum -y install zlib-* #安装zlib系列包
3、命令:yum –y lrzsz #安装传输工具
4、拷贝文件
5、命令:tar –xvf Python-3.6.1.tgz #解压文件
6、命令:mkdir –p /user/local/pyrhon3 #创建安装目录
7、命令:./python/configure --prefix=/usr/local/python3.6
#进行安装初始化,并指定安装路径
8、命令:make #编译命令
9、命令:make install #编译安装
10、命令:ln -s /usr/local/python3/bin/python3 /usr/bin/python3
#建立python3的软链
11、命令:vim ~/.bash_profile #加入环境变量
12、检验python3是否安装成功 #输出“Hello World”
安装samba服务
1、准备环境
iptables –F 临时清除防火墙
systemctl stop firewalld
systemctl disable firewalld 关闭开机自启
setenforce 0
/etc/sysconfig/selinux
#SELINUX=disabled
====》part2:配置ip arping ip地址 ping通时返回ip地址
2、安装软件包
yum -y install samba
3、修改配置文件
/etc/samba/smb.conbf
[public]
comment = Public Stuff
path = /share
public = yes
writable = yes
printable = no
write list = +staff
4、启动服务
systemctl start smb
5、测试
samba用户必须是系统用户,登录类型为/sbin/nologin不可登录型
[root@www repo_bak]# useradd smb1
[root@www repo_bak]# smbpasswd -a smb1
[root@www repo_bak]# useradd smb2
[root@www repo_bak]# smbpasswd -a smb2
[root@www repo_bak]# useradd smb3
[root@www repo_bak]# smbpasswd -a smb3
[root@www repo_bak]# usermod -s /sbin/nologin smb1
[root@www repo_bak]# usermod -s /sbin/nologin smb2
[root@www repo_bak]# usermod -s /sbin/nologin smb3
安装nginx
1、准备环境
iptables –F 临时清除防火墙
systemctl stop firewalld
systemctl disable firewalld 关闭开机自启
setenforce 0
/etc/sysconfig/selinux
#SELINUX=disabled
====》part2:配置ip arping ip地址 ping通时返回ip地址
2、安装软件包
二进制方式安装
yum install epel-release -y
yum install nginx -y
源码安装
yum –y install gcc-*
yum –y install glibc-*
yum –y install pcre -y
./configure --prefix=/usr/local/nginx --with-pcre=/usr/lib64
./configure --prefix=/usr/local/nginx --with-http_rewrite_module
make
make install
3、修改配置文件
二进制:/etc/nginx/nginx.conf
源码:/usr/local/nginx/conf/nginx.conf
vim /usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 3;
4、启动服务
二进制:systemctl restart nginx
源码:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ps aux | grep nginx
#/usr/local/nginx/sbin/nginx -s stop 关闭
#/usr/local/nginx/sbin/nginx -s reload 重新加载配置文件
5、测试
浏览器打开192.168.205 显示welcome to nginx!即成功
安装nfs服务
1、准备环境
iptables –F 临时清除防火墙
systemctl stop firewalld
systemctl disable firewalld 关闭开机自启
setenforce 0
/etc/sysconfig/selinux
#SELINUX=disabled
====》part2:配置ip arping ip地址 ping通时返回ip地址
2、安装软件包
yum install rpcbind nfs-utils –y
3、修改配置文件
NFS服务的配置文件:/etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,
所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。
/etc/exports文件内容格式:
<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
客户端常用的指定方式
指定ip地址的主机:192.168.0.200
指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0
指定域名的主机:david.bsmart.cn
指定域中的所有主机:*.bsmart.cn
所有主机:*
NFS主要有3类选项:
访问权限选项
设置输出目录只读:ro
设置输出目录读写:rw
用户映射选项
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
其它选项
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
例如:
/share 192.168.31.0/24(rw,sync,fsid=0)
4、启动服务
chmod -R o+w /share #开权限(nfs开启了w权限还不行,others还需要对/share目录有w权限)
systemctl enable nfs-server.service #为nfs做开机启动:
systemctl enable rpcbind.service #为rpcbind做开机启动:
systemctl start rpcbind.service 启动(必须先启动rpcbind服务)
systemctl start nfs-server.servic 启动(必须先启动rpcbind服务)
5、测试
安装计划任务crond服务
计划任务:事先手动将计划任务设定好,后台运行,到了预定的时间就会自动执行的任务
crond服务相关的软件包
[root@MiWiFi-R3-srv ~]# rpm -qa |grep cron
cronie-anacron-1.4.11-14.el7.x86_64
crontabs-1.11-6.20121102git.el7.noarch
cronie-1.4.11-14.el7.x86_64
这些包在最小化安装系统时就已经安装了,并且会开机自启动crond服务,
并为我们提供好编写计划任务的crontab命令。
计划任务分为两类:系统级和用户级
系统级计划文件存放在/etc/crontab路径下
用户的计划文件放在/var/spool/cron/用户名
编写计划任务:
系统级可以直接对文件进行修改或使用 crontab -e命令
用户级使用 crontab -e命令
crontab -e -u user1 #指定user1编写计划任务
crontab命令编写计划任务
语法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]
crontab任务配置基本格式:
* * * * * command
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天) 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
参 数:
-e 编辑该用户的计时器设置。
-l 列出该用户的计时器设置。
-r 删除该用户的计时器设置。
-u<用户名称> 指定要设定计时器的用户名称。
注意:
1 查看计划任务的执行:tail -f /var/log/cron
2 写计划任务时,命令必须加上绝对路径,否则会出现这种情况:
从日志中看,确实触发了计划任务的执行,但是命令却没有执行成功,
比如* * * * * reboot就会出现这种情况,需要将reboot写成/usr/sbin/reboot
crontab例子:
30 21 * * * /usr/local/etc/rc.d/apache restart #每晚的21:30 重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/apache restart #每月1、10、22日的4 : 45重启apache
10 1 * * 6,0 /usr/local/etc/rc.d/apache restart #每周六、周日的1 : 10重启apache
0,30 18-23 * * * /usr/local/etc/rc.d/apache restart #每天18 : 00至23 : 00之间每隔30分钟重启apache
0 23 * * 6 /usr/local/etc/rc.d/apache restart #每星期六的11 : 00 pm重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/apache restart #晚上11点到早上7点之间,每隔一个小时的每分钟重启 apache
0 */1 * * * /usr/local/etc/rc.d/apache restart #每一小时重启apache
常见的时间格式可以用如@yearly的方式代替
@reboot 代表的意思Run once, at startup.
@yearly 代表的意思Run once a year, "0 0 1 1 *".
@annually 与@yearly相同意思
@monthly 代表的意思Run once a month, "0 0 1 * *".
@weekly 代表的意思Run once a week, "0 0 * * 0".
@daily 代表的意思Run once a day, "0 0 * * *".
@midnight 与@daily的意思相同
@hourly 代表的意思Run once an hour, "0 * * * *".
查看cron服务是否起作用
cat /var/log/cron 查看定时任务是否准时调用了可以/var/log/cron中的运行信息
tail -f /var/spool/mail/用户名 查看普通用户的计划任务执行情况
date '+%Y-%m-%d' 以2017-06-01的格式获取时间信息
%H %M %S 分别表示时、分、秒 %T 表示完整时间
date '+%Y-%m-%d_%T' 显示2017-06-01_12:15:20
touch `date '+%Y-%m-%d'`.txt 创建2017-06-01.txt(``表示取执行结果)
* * * * * /usr/bin/tar cvf /etc_bak/$(date '+\%Y-\%m-\%d_\%T').tar.gz /etc
Shell
shell一般代表两个层面的意思,一个是命令解释器,比如BASH,
另外一个就是shell脚本。本节我们站在命令解释器的角度来阐述shell
每个用户登录shell需要执行的四个文件
/etc/profile
/home/egon/.bashrc_profile
/home/egon/.bashrc
/etc/bashrc
非登录shell加载的文件
/home/egon/.bashrc
/etc/bashrc
通常,我们会将环境变量设置在 /home/egon/.bashrc 中
如果不管哪种登录都想使用的变量 就设置在/etc/bashrc中
添加语句:
PATH=/usr/local/python3:$PATH
export PATH
bash中元字符:
bash中的特殊字符,键盘上能敲出来的特殊字符都有其特殊意义
元字符是被shell解释的
`` 命令替换 取命令的执行结果
res=`ls` #取命令的运行结果,赋值给变量res
$()同``但它弥补了``的嵌套缺陷
res=$(echo $(ls)) #替代方案
~ 家目录
! 取非/匹配最近一次历史命令
! ls 带空格 将命令的返回值取反
[root@~]# ! echo ok #将结果取反
ok
[root@ ~]# echo $?
1
@ 无特殊含义
# 注释
$ 变量取值
$() 同``
${} 变量名的范围
$[] 整数计算
& 后台执行;&& 逻辑与
* 匹配任意长度字符串;计算乘法
() 在子进程中执行
"" 软引 ''硬引
; 可以接多个命令
: 空命令 真值
| 管道; || 逻辑或
转义;
{} 命令列表 ,注意括号内的开头和结尾必须是空格{ ls; cd /; }
[] 字符通配,匹配括号内之一;
正则表达式
正则:用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。
或者说:正则就是用来描述一类事物的规则。
在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的
文本处理工具/命令:grep
参数
-n :显示行号
-o :只显示匹配的内容
-q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容
-l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc
-A :如果匹配成功,则将匹配行及其后n行一起打印出来
-B :如果匹配成功,则将匹配行及其前n行一起打印出来
-C :如果匹配成功,则将匹配行及其前后n行一起打印出来
--color
-c :如果匹配成功,则将匹配到的行数打印出来
-E :等于egrep,扩展
-i :忽略大小写
-v :取反,不匹配
-w:匹配单词
-r 递归查询
grep种类
grep
fgrep
pgrep
egrep
常用grep、egrep
正则介绍
^ 行首
$ 行尾
. 除了换行符以外的任意单个字符
* 前导字符的零个或多个
.* 所有字符
[] 字符组内的任一字符
[^] 对字符组内的每个字符取反(不匹配字符组内的每个字符)
^[^] 非字符组内的字符开头的行
[a-z] 小写字母
[A-Z] 大写字母
[a-Z] 小写和大写字母
[0-9] 数字
< 单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词
> 单词尾
grep 加 -E 或 egrep 或转义
? 前导字符零个或一个
+ 前导字符一个或多个
x{m} x出现m次
x{m,} x出现m次至多次(至少m次)
x{m,n} x出现m次至n次
***************
作业一:
1) 新建用户natasha,uid为1000,gid为555,备注信息为“master”
groupadd -g 555 natasha
useradd -u 1000 -g 555 -c master natasha
id natasha
2) 修改natasha用户的家目录为/Natasha
cd /home
usermod -md /Natasha natasha
3) 查看用户信息配置文件的最后一行
tail -1 /etc/passwdtai
4) 为natasha用户设置密码“123”
echo '123' | passwd --stdin natasha
5) 查看用户密码配置文件的最后一行
tail -1 /etc/shadow
6) 将natasha用户账户锁定
usermod -L natasha
7) 将natasha用户账户解锁
usermod -U natasha
8) 新建组police,gid为1999
groupadd -g 1999 police
9) 查看组配置文件的最后一行
tail -1 /etc/group
10) 将natasha用户加入police组
usermod natasha -a -G police
11) 修改police组的组名为jingcha
groupmod -n jingcha police
12) 删除natasha用户,连家目录和邮箱一起删除
userdel -r natasha
13) 删除jingcha组
groudel jingcha
作业二:
1) 在用户的主目录下创建目录test,进入test创建空文件file1
mkdir /test/
cd /test
touch file1
2) 以长格式形式显示文件信息,注意文件的权限和所属用户和组
ls -l file1
3) 为文件file1设置权限,使其他用户可以对此文件进行写操作。
chmod o=r file1
4) 查看设置结果
ls -l file1
5) 取消同组用户对文件file1的读取权限,并查看设置结果。
chmod g-r file1
ls -l file1
6) 用数字表示法为文件file设置权限,所有者可读、可写、可执行,所属组用户和其他用户只具有读和执行的权限。设置完成后查看设置结果。
chmod 755 file1
ls -l filel
7) 用数字形式更改文件file1的权限,使所有者只能读取此文件。其他任何用户都没有权限。查看设置结果。
chmod 400 file1
ls -l filel
8) 回到上层目录,查看test的权限
cd ..
ll -d /test
9) 为其他用户添加对此目录的写权限
chmod -R 0+w /test
作业三:
以操作文件的方式,新建一个用户alex
[root@localhost /]# vim /etc/passwd 添加内容:#alex:x:2001:1001:alex:/home/alex:/bin/bash
[root@localhost /]# vim /etc/shadow 添加内容:#alex:$6$5p8WDDqDOhrEhzbSNe.enZJpJZR387pc0::0:99999:7:::
[root@localhost /]# vim /etc/group 添加内容:#alex:x:1001:alex
[root@localhost /]# vim /etc/gshadow 添加内容:#alex:!!::alex
[root@localhost /]# mkdir /home/alex
[root@localhost /]# cp -r /etc/skel/.[!.]* /home/alex
[root@localhost /]# chown -R alex:alex /home/alex/
[root@localhost /]# touch /var/spool/mail/alex
[root@localhost /]# chown alex:mail /var/spool/mail/alex
[root@localhost /]# id alex
uid=2001(alex) gid=1001(alex) 组=1001(alex)
[root@localhost /]#
作业四:
1) 新建目录/test/dir,属主为tom,数组为group1,/test目录的权限为777
useradd tom
echo '123' | passwd --stdin tom
groupadd group1
mkdir -p /test/dir
chown tom:group1 /test/dir
chmod 777 /test/
2) 新建用户jack,切换到jack用户下,验证jack用户对dir目录的rwx权限(开启另外一个终端,依次修改dir目录的others权限)
useradd jack
echo '123' | passwd --stdin jack
su - jack
ll -d /test/dir
验证: 修改权限:
ll -d /test/dir chmod 0=- /test/dir
touch /test/dir/yanzheng.txt
cd /test/dir
3)将jack加入group1组,验证jack用户对dir目录的rwx权限(开启另外一个终端,依次修改dir目录的group权限)
usermod jack -a -G group1
验证: 修改权限:
ll -d /test/dir chmod g+w /test/dir
rm /test/dir/yanzheng.txt
cd /test/dir
4)切换到tom用户,验证tom用户对dir目录的rwx权限(开启另外一个终端,依次修改dir目录的user权限)
su - tom
验证:
ls /test/dir
touch /test/dir/yanzheng.txt
cd /test/dir
5)在dir目录内新建文件tom.txt,属主为tom,属组为group1,/test目录的权限为777
touch /test/dir/tom.txt
chown tom:group1 /test/dir/tom.txt
chmod 777 /test
6)新建用户rose,切换到rose用户下,验证rose用户对tom.txt的rwx权限(开启另外一个终端,依次修改tom.txt的others权限来配合验证过程)
useradd rose
echo '123' | passwd --stdin rose
su - rose
验证:
cat /test/dir/tom.txt
echo '11111111'>> /test/dir/tom.txt
./test/dir/tom.txt
7)将rose加入group1组,在rose用户下,验证rose用户对tom.txt的rwx权限(开启另外一个终端,依次修改tom.txt的group1权限来配合验证过程)
usermod rose -a -G group1
su - rose
验证:
cat /test/dir/tom.txt
echo '2222222'>> /test/dir/tom.txt
./test/dir/tom.txt
8)切换到tom用户,验证tom用户对tom.txt的rwx权限(开启另外一个终端,依次修改tom.txt的user权限来配合验证过程)
su - tom
验证:
cat /test/dir/tom.txt
echo '3333333'>> /test/dir/tom.txt
./test/dir/tom.txt
********************
作业一:
1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖)
cat /etc/passwd /etc/group > /test/1.txt
2) 将用户信息数据库文件和用户密码数据库文件纵向合并为一个文件/2.txt(追加)
cat /etc/passwd /etc/shadow >> /test/2.txt
3) 将/1.txt、/2.txt两个文件打包为/1.tar
tar -cvf /test/1.tar /test1.txt /test/2.txt
4) 使用gzip命令压缩1.txt文件名为1.txt.gz
gzip 1.txt.gz /test/1.txt
5) 解压缩1.txt.gz
gunzip 1.txt.gz
6) 使用bzip2压缩1.txt压缩后文件名为1.txt.bz2
bzip2 1.txt.bz2
7) 解压缩1.txt.bz2
bunzip2 1.txt.bz2
8) 解包1.tar,解包后文件存放到/tmp目录下
tar -xvf /test/1.tar -C /tmp/test
9) 使用tar命令打包并且压缩/1.txt、/2.txt,得到的文件名为1.tar.gz
tar -zcvf /test/1.tar.gz /test/1.txt /test/2.txt
10) 解包1.tar.gz,解包后文件存放到/tmp目录下
tar -xvf /test/1.tar.gz -C /tmp/test
作业二:
1) 使用vi编辑器编辑文件/1.txt进入编辑模式写入内容“hello world”
vi /test/1.txt
输入:a 进入编辑模式
2) 进入命令行模式复制改行内容,在下方粘贴80行
yy
80P
3) 快速移动光标到文件的最后一行
G
4) 快速移动光标到当前屏幕的中间一行
M
5) 快速移动光标到文件的第五行
5G
6) 在下方插入新的一行内容“welcome to beijing”
o
welcome to beijing
7) 删除刚插入的一行
dd
8) 撤销上一步的操作
u
9) 进入扩展模式,执行文件的保存退出操作
shift+:
wq
作业三:
1) 单用户模式破解root密码
1)重启按e 进入进入到GRUB启动菜单
2)找到单用户配置文件 (开头:linux16 /Vmlinuz-3.10
3)删除rhgb quiet 设置
4)在UTF-8后面输入:init=/bin/sh
5)ctrl+x 重启
6)输入:monut -o remount,rw /
7)vi/vim 进入/etc /passwd 删除root用户密码占位符
或者echo ‘abc123’ | passwd –stdin root 给root用户重置密码,
8)输入 touch /.autorelabel 更新系统信息
9) 输入 exec /sbin/init 重启系统
2) 救援模式破解root密码
1.准备一张光盘,与原操作系统一致
2.开机后进入bois 设置使用cdrom启动
3.进入系统安装界面选项,选择rescue installed system
4.choose a language 选择语言 默认就好(english)
5.keyboard type 选择键盘类型 美国 (us)默认即可
6.set up Networking 网络设置 这里看情况,需要拷贝出数据的话要设置网络,单纯修改密码就不需要了
7.rescue选项 这里选择continue 这样就把光盘镜像的系统默认挂载到/mnt/sysimage下,选择read-only需要手动挂载,这里默认就好
8.选择ok 这里提示你系统已经挂载到/mnt下,并且提示下一步要执行 chroot /mnt/sysimge
9.进入一个shell命令行,提示符为bash-4.1#
运行第8步中提示的命令 chroot /mnt/sysimage 这一步的命令是将挂载的镜像系统目录移动的根目录下。
此时提示符变为 sh-4.1#
10.修改密码,在sh-4.1#提示符下输入passwd root
11.输入exit 退出sh-4.1#返回到bash-4.1#界面 然后重启输入reboot