Liunx
- 不同的操作系统 Linux、Unix、Windows…
- Linux的不同的发行版本: debian、ubuntu、deepin、rethat、centos、fedora等等
Linux系统安装
可以参考我的安装Linux系统的文章,或者看网上找下安装步骤
Linux命令
命令行基础操作:
1. 命令行
[root@linux01 Desktop]#
root 用户、linux01 主机名、 Desktop 用户所在目录、# 表示root用户($ 代表普通用户)
2. 查看历史命令
history
或者使用 ↑、↓按键获取历史命令
3. tab补全命令
使用tab按键补全输入的命令、文件名等
4. 清屏
clear 或 ctrl+l快捷键
5. 查看当前位置
pwd
基础命令
- ls
- cd
- touch
- mkdir
- rm
- cp
- mv
- cat
- more
- less
- head
- tail
- reboot
- shutdown
vi编辑器使用
略
网络配置
- 配置主机名
查看主机名
$ hostname
修改主机名 重启后失效
# hostname my-hostname
修改主机名 重启后生效
# vi /etc/hostname
修改主机名
- ip配置
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改或增加一下配置 (网段根据具体情况定,我这里是虚拟机)
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.81.101
PREFIX=24
GATEWAY=192.168.81.2
DNS1=192.168.81.2
重启网络服务
systemctl restart network
systemctl enable network
- 映射文件
# vi /etc/hosts
192.168.81.101 my-hostname
验证网络配置
验证是否可以访问外网,或者局域网内的主机
ping www.baidu.com
用户和用户组
- 查看用户
$ cat /etc/passwd root :x:0:0:root:/root:/bin/bash
root 用户名
x 密码
0 用户id
0 用户组id
root 用户描述
/root 用户家目录
/bin/bash 用户所用的shell 当创建一个用户,系统会默认创建一个和用户名相同的用户组
- 查看用户组
$ cat /etc/group
- 用户类型
在 Linux 系统中,有以下几种常见的用户类型
超级用户(root 用户):具有最高权限,可以对系统进行任何操作,包括修改系统设置、安装软件、管理文件和用户等。
普通用户:这类用户只能执行有限的系统操作,无法修改系统设置或管理其他用户。他们的文件和目录通常位于/home 文件夹下。
系统用户:用于运行系统服务或守护进程的特殊用户。这些用户通常不允许直接登录系统,而是通过服务进程来执行任务。
组用户:组是用户的集合,可以将多个用户归为一个组,以便于管理和共享文件和权限。
通过使用用户和组的概念,Linux 系统可以实现对不同用户的访问控制和权限管理,提高了系统的安全性和可管理性。
- 创建用户
# useradd xiefei
# passwd 密码 设置或修改密码
- 删除用户
# userdel -r xiefei 彻底删除用户
- 创建用户组
#groupadd 用户组
- 向用户组添加用户及删除用户,查看用户所属用户组
# gpasswd -a hadoop mygroup
# gpasswd -d hadoop mygroup
# groups hadoop
- 切换用户
$ su - 切换为root用户,同时切换工作目录
# exit 退出当前用户
$ su 切换为root用户$ su hadoop 切换为hadoop
$ su - hadoop 切换为hadoop ,并切换工作目录su 和 su - 的区别:前者切换用户, 后者切换用户及用户环境# exit 退出用户
用户文件和目录权限
查看文件权限
ls -l /etc/sysconfig
显示内容如下:
-rw-r--r--. 1 root root 429 Jan 24 03:22 authconfig
drwxr-xr-x. 2 root root 43 Jan 24 03:20 cbq
drwxr-xr-x. 2 root root 6 Nov 6 2016 console
-rw-r--r--. 1 root root 150 Nov 23 2016 cpupower
-rw-------. 1 root root 110 Mar 31 2016 crond
-rw-------. 1 root root 1390 Nov 6 2016 ebtables-config
-rw-r--r--. 1 root root 73 Nov 12 2016 firewalld
lrwxrwxrwx. 1 root root 17 Jan 24 03:20 grub -> /etc/default/grub第一个字符: d:目录 、-:文件、l:软链接
第一组rwx:所属用户(u)的权限
第二组rwx:所属用户组(g)的权限
第三组rwx:其他用户(o)的权限字母表示:r 可读(read)、w 可写(write)、x 可执行rwx 可读可写可执行 r-x 可读可执行
数字表示:rwx 也可以表示为 111 7 rw- 110 6r-x 101 5r-- 100 4
- 修改权限
# chmod u+x test.c 为所属用户添加执行权限
# chmod g+w test.c 为所属用户组添加写权限
# chmod o-x test 删除其他用户的执行权限# chmod 444 test.c 修改为只读
# chmod 764 test.c 修改为可读可写可执行
# chomd 777 -R test/ 递归修改test的所有文件权限
- 修改所属用户
# chown hadoop msg.txt 把msg.txt修改为hadoop所有
- 修改所属用户组
# chgrp hadoop msg.txt
- 修改所属用户及所属用户组
# chown hadoop:hadoop -R myDir/
- 向用户组添加用户及删除用户,查看用户所属用户组
# gpasswd -a hadoop mygroup
# gpasswd -d hadoop mygroup
# groups hadoop
sudo权限
# visudo
输入/root搜索
然后在root ALL。。。下面配置普通用户的sudo权限
root ALL=(ALL) ALL
user01 ALL=(ALL) NOPASSWD: ALL解释:
第一个ALL是指网络中的主机,它指明user01用户可以在此主机上执行后面的命令。
第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。
最后一个ALL是指命令。
使用sudo权限
$ sudo vi /etc/hosts
常见命令
- 管道符 |
把前一个命令的输出结果传递给后面的命令处理
# ls -la /etc | more
- 使用grep过滤
$ ls -l / | grep etc 查看/etc的权限
cat /etc/passwd | grep 'root' 查看/etc/passwd包含‘root’的行
ls -la /etc | grep config 查看/etc下, 包含‘config’的行
# ll /etc/ | grep 'sysconfig' 查看当前目录的包含“sysconfig”的文件
# ifconfig | grep 'inet' 查看ip
- 覆盖 >, 追加>>
# ll > test.txt 以长格式显示当前目录 并覆盖到test.txt文件中
# ll >> test.txt 以长格式显示当前目录 并追加到test.txt文件中
- wc 单词行数统计
# wc -l /etc/passwd 统计/etc/passwd的行数
# wc -w test.c 统计test.c的单词数
#ls /etc/sysconfig/ | wc -w 统计/etc/sysconfig,有多少个文件
- 统计文件或目录大小
# du -sh /lib 显示目录的大小
-
搜索命令 find
语法格式:find 范围 条件-
按文件名·
# find / -name init 模糊查询带有关键字的: $ find /etc/ -name *work 查找关键字开头的文件: $ find /etc/ -name init* 匹配单个字符 $ find /etc/ -name ???work 不区分大小写匹配 $ find /etc/ -iname ???work
-
按文件大小
指定方式:+大于, -小于,不加符号表示等于 $ # find /etc/ -size +2M
-
按所属用户,用户组
# find / -user hadoop # find / -group hadoop
-
按文件类型
# find /etc/ -name *work -type f 文件 # find /etc/ -name *s -type d 目录
-
-
压缩解压
tar压缩解压为 .tar.gz
-C 指定dir
-z, --gzip, --gunzip, --ungzip filter the archive through gzip
-c, --create create a new archive
-x, --extract, --get extract files from an archive
-v, --verbose verbosely list files processed
-f, --file=ARCHIVE use archive file or device ARCHIVE
-f后面必须跟上要处理的文件名
- 压缩解压
# tar -zcvf test.tar.gz ./ 将当前目录压缩为test.tar.gz# tar -zxvf test.tar.gz -C /opt 将压缩文件test.tar.gz 解压到 /opt目录
压缩解压为.tar
tar -cvf content.tar Main.java msg.txt 将Main.java msg.txt压缩为 context.tar
tar xvf content.tar -C test 将content解压到test文件夹下
压缩解压: .gz 不保留源文件
压缩
$ gzip hello.mp4
解压
$ gunzip hello.mp4.gz
- date 命令
- 显示系统时间
date Mon Jun 5 15:11:44 CST 2017
- 带时区的时间
date -R Mon, 05 Jun 2017 15:14:44 +0800
- 格式化日期
date '+%Y-%m-%d %H:%M:%S' 2017-05-02 11:20:10
- 设置时间
date -s "2016-12-08 10:43:00"
- 校准时间
sudo ntpdate ntp.api.bz ntpdate ntp.api.bz 为网络时间服务器
rpm包管理
- 查看安装软件
$ rpm -qa | grep jdk
查看某个文件属于哪个rpm包安装的
# rpm -qf /etc/ntp.conf
- 安装
# rpm -ivh tree-1.5.3-3.el6.x86_64.rpm
用法: rpm -ivh 软件名(.rpm)
选项:-i install 代表安装、-vh 显示详细的进度
- 卸载
选项: -e(--erase) 代表卸载 、--nodeps (不验证依赖卸载)
# rpm -e tree-1.5.3-3.el6.x86_64 --nodeps
- 卸载自带jdk
$ sudo rpm -e java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64 --nodeps
$ sudo rpm -e java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64 --nodeps
yum
方便、快捷、自动解析依赖,需要连接外网
- 查询
# yum list //查看yum源上拥有的软件
$ sudo yum list installed | grep tree 相当于rpm -qa | grep tree
- 安装
选项:install 表示安装,跟yum源的软件名
选项:-y , 表示直接自动确认
# yum install httpd-devel.x86_64
# yum -y install httpd-devel.x86_64
$ sudo yum install tree
- 卸载
# yum -y remove httpd-devel.x86_64
安装jdk,配置环境变量
- 创建两个目录
$ sudo mkdir /opt/software //安装包的存放目录
$ sudo mkdir /opt/modules //解压安装的目录
- 修改目录的所属用户及所属用户组
$ sudo chown hadoop:hadoop /opt/software/ /opt/modules/
- 上传并解压jdk
$ tar -zxvf /opt/software/jdk-8u112-linux-x64.tar.gz -C /opt/modules/
- 配置环境变量
# vi /etc/profile
末尾添加
#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
- 使生效
#source /etc/profile
- 检查是否成功
java
javac
java -version
系统管理命令
- top 查看系统资源
相当于任务管理器
每隔3秒更新一次
按q或ctrl+c退出浏览状态
- 查看系统资源
vmstat 2 5
展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况
2 表示间隔时间
5 表示采集次数
- free 查看内存信息
选项:-m, 就是以MB格式显示
free -h
free -m
- 查看硬盘分区信息
df -l
- ps -ef 查看系统进程
ps -ef | grep crond
- 查看java进程
jps
- 杀死正在进行的进程
kill -9 进程id
- ifconfig 查看网络信息
- 检测网络连接
ping 另一台主机
- 查看网络端口
netstat -antp
选项:
-t #监控tcp协议的进程
-l #listenning
-n #显示端口号信息
-p # 显示进程的PID
Crontab 任务调度
- crontab命令
crontab -l (list ) #查看目前的计划任务列表
crontab -r (remove) #删除计划任务
crontab -e (eidt) #编辑周期性计划任务
- 查看进程服务, 如果停止可以启动
$ systemctl status crond
$ systemctl start crond
$ systemctl enable crond
调度语法
Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed* * * * * 分钟 小时 天(of月) 月(of年) 星期(of周)
特殊字符
"*"代表所有的取值范围内的数字,如月份字段为*,则表示1到12个月;
"/"代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。
"-"代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。
","分散的数字(不一定连续),如1,2,3,4,7,9。
注:由于各个地方每周第一天不一样,因此Sunday=0(第一天)或Sunday=7(最后1天)。
实例)
- 定时调度例子:
每一分钟执行一次command(因cron默认每1分钟扫描一次,因此全为*即可)
*/1 * * * * /bin/date >> /root/Desktop/date.txt
每小时的第3和第15分钟执行command
3,15 * * * * /bin/cp /root/Desktop/date.txt /root/date.log
每天上午8-11点的第3和15分钟执行command:
3,15 8-11 * * * command
每隔2天的上午8-11点的第3和15分钟执行command:
3,15 8-11 */2 * * command
每个星期一的上午8点到11点的第3和第15分钟执行command
3,15 8-11 * * 1 command
每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
每一小时重启smb
* */1 * * * /etc/init.d/smb restart
晚上11点到早上7点之间,每隔一小时重启smb
* 23,0-7/1 * * * /etc/init.d/smb restart
每月的4号与每周一到周三的11点重启smb
0 11 4 * mon-wed /etc/init.d/smb restart
每小时执行/etc/cron.hourly目录内的脚本
0 1 * * * root run-parts /etc/cron.hourly
每天晚上18:00执行一次拷贝/home/uer01/2.log文件到/opt/software的任务
0 18 * * * /bin/cp /home/uer01/2.log /opt/software
每天晚上6点到第二天早上6点 每15分钟记录一次时间到/home/uer01/2.log文件中
*/15 18-23,0-6 * * * /bin/date >> /home/user01/2.log
0,15,30,45 18-23,0-6 * * * /bin/date -R >> /home/user01/2.log