Linux

pdf文件转为md

Linux基础命令1

Linux软件安装

Linux操作练习项目

Linux磁盘管理体系1

Linux磁盘管理体系2

Linux磁盘管理故障案例与特殊符号

jdk环境变量配置
export JAVA_HOME=/usr/local/src/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib
Ubuntu添加用户
useradd -r -m -s /bin/bash rbc
用户、组
whoami                                                     //显示当前用户的身份
id rbc                                                     //显示当前用户id信息
who、w                                                     //显示在线登录用户
pkill -9 -t pts/2                                           //剔出用户pts/2

useradd/usermod –d /usr/rbc -m rbc -g rbc -G hadoop,hive rbc
-d指定目录,-m创建目录,-g指定组,-G指定附加组

userdel -r rbc                                               -r删除主目录
usermod -l new old                                           修改用户名

passwd [-l -u -d -f] rbc
-l锁定,-u解锁,-d使账号无口令,-f强迫用户下次登录时修改口令

/etc/passwd                                                  用户信息保存文件
sam:x:200:50:Sam san:/usr/sam:/bin/sh
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

/etc/shadow                                                  密码信息保存文件

/etc/group                                                   组信息保存文件
adm::4:root,adm
组名:口令:组标识号:组内用户列表

groupadd share
groupdel share
groupmod -n 新组名 组名
chgrp -R share  dir                                         更改文件属组
chown -R :share dir                                         修改文件属主及属组
chmod ugoa +-= rwx dir                                      修改权限

su - 用户                                     切换用户,加"-"表示切换到用户所在的目录
exit                                          退出切换的用户
密码修改为原密码方案
修改密码时提示:你当前设置的密码最近已经使用过,请重新设置。 那如果偏要使用当前设置的密码该怎么办呢?
找到linux下的一个文件/etc/security/opasswd, 这个文件记录了历史密码,把它清空,再重新设置密码;
每个目录属于哪个磁盘
for i in `ls /`;do df -h $i;done
普通用户快捷登录root用户
1、切换roo用户操作
2、在/usr/bin目录下编辑脚本sur.sh
3、脚本内容

4、给脚本授权:
    chown root:root sur.sh
    chmod 755 sur.sh
5、安装expect :yum -y install expect
6、切换到普通用户执行:echo 'alias sur="/usr/bin/sur.sh"' >> ~/.bashrc
7、重新登录普通用户执行:sur,看是否可以登录到root
禁止root账号登录
1.新建一个用户,用来登录:useradd test
2.设置密码(需要切换到root下进行设置):passwd test
3.修改SSHD配置,禁用root登录:vim /etc/ssh/sshd_config   找到“PermitRootLogin yes”把yes改成no
4.启用telnet服务(如果没安装请安装)
5.重启SSHD服务:service sshd restart
6.下次登陆的时候先用test用户登录,然后再切换root用户即可
给用户添加sudo命令
编辑sudoers文件:sudo visudo

## Same thing without a password
# %wheel    ALL=(ALL)       NOPASSWD: ALL
rbc         ALL=(ALL)       NOPASSWD: ALL
普通登录用户切换root无密码登录
切换到root权限;
创建group为wheel,命令为:groupadd wheel
将用户加入wheel group中,命令为:usermod -G wheel ecsuser
修改su的配置文件/etc/pam.d/su,增加下列项:vim /etc/pam.d/su
auth            sufficient      pam_wheel.so trust use_uid
NFS设置
https://www.cnblogs.com/syushin/p/14538790.html
https://www.cnblogs.com/ludingchao/p/17551262.html
安装使用nfs

选择一台服务器作为共享目录服务器:例如选择30.171.126.93
安装nfs包:yum install -y nfs-utils
新建一个目录作为共享目录 mkdir /nfs/data
编辑NFS配置文件 vim /etc/exports 追加 /nfs/data *30.171.126.0/24(rw,sync,all_squash)
安装NFS和rpcbind服务:
systemctl start rpcbind
systemctl start nfs-server
检查是否启动成功:
ps aux | grep nfs
启动成功后,可以通过看 /var/lib/nfs/etab 这个文件,看文件有没有配置的nfs信息,如果有则表明启动服务没什么问题。

查询可用的NFS地址
showmount -e 30.171.126.93

其他服务器挂载93服务器的共享目录
mount 30.171.126.93:/nfs/data /nfs/data/

卸载挂载共享目录
umount /nfs/data/
命令搜索
whereis ls                                              搜索命令所在目录
which ls                                                搜索命令所在目录及别名
公私钥生成
/root/.ssh                                            root账号路径

ssh-keygen -t rsa                                     生成秘钥,按三次回车
ssh-keygen -f /root/.ssh/id_rsa -t rsa -N ''          或者 生成秘钥

会生成id_rsa私钥、id_rsa.pub公钥

免密访问时复制公钥追加到另外一台服务器的/root/.ssh/authorized_keys文件内

文件authorized_keys权限需要是0600
chmod 0600 ~/.ssh/authorized_keys
服务器免密访问
A服务器免密访问B服务器
把A的公钥/root/.ssh/id_rsa.pub添加到B的权限文件中/root/.ssh/authorized_keys
shell脚本格式转换
在linux下通过vi打开该文件。在命令模式下使用set ff命令,可以看到该文件的格式为fileformat=dos,然后修改文件格式:set ff=unix,最后保存退出就可以了

dos2unix  文件名.sh                                         把dos文件转换成unix文件
日期
date -d day '+%Y-%m-%d %H:%M:%S'                 时间的格式化(2018-03-24 16:01:00)
date -s "2015-06-15 13:30"                       修改时间
timedatectl                                      查看时区信息

date -d "-1 day" "+%Y-%m-%d %H:%M:%S"            获取之前或者之后的某个时间
  --符号的可选值:+(之后) 或者 -(之前)
  --单位的可选值:day(天)、month(月份)、year(年)

date '+%Y-%m-%d %H:%M:%S'                        输出当前日期时间

ntpdate asia.pool.ntp.org & > /dev/null                 同步系统时间
启动、停止服务脚本
nohup java -jar demo.jar >/dev/null 2>&1 &

kill -9 `ps -ef | grep -w "item-namae" | grep -v "grep" | awk '{print $2}'`
基本命令
hostname                                        显示主机名称
uname -a                                        显示操作系统信息(获取全部的系统信息(类型、全部主机名、内核版本、发布时间、开源计划))
dmesg                                           显示系统启动信息
locale                                          显示当前语言环境
ls -l | grep "^d"                               只列出目录

JAR_NAME=`ls -r data-app-*.jar | head -n 1`     根据更新时间排序,获取第一个
重启生效命令
chkconfig iptables on                          重启后开启
chkconfig iptables off                         重启后关闭
软链接
ln  -s  [源文件] [软链接文件]                  创建软连接,(不加-s是创建硬链接)
unlink [软链接文件]                            删除软连接
rm     [软链接文件]                            删除软连接
通配符
?   匹配一个任意字符

*    匹配0个或任意多个任意字符,也就是可以匹配任意内容

[]   匹配括号中任意一个字符,例如[abc]代表一定要匹配这其中的一个字符

[-]  匹配括号中任意一个字符,-代表一个范围,例如[a-z]代表匹配一个小写字母

[^]  逻辑非,表示匹配不是括号中的一个字符,例如[^0-9]代表匹配一个不是数字的字符
正则表达式
*          前一个字符匹配0次或任意多次

.          匹配除了换行符外任意一个字符

^          匹配行首。例如:^hello会匹配以hello结尾的行

$          匹配行尾。例如:hello$会匹配以hello结尾的行

[]         匹配中括号中指定的任意一个字符,值匹配一个字符。
           例如:[abcdef] 匹配任意一个字母,[0-9]匹配任意一个数字,
           [a-z][0-9]匹配小写字母和一位数字构成两位字符

[^]        匹配除括号中字符以外的任意一个字符

\         转义符。用于将特殊符号的含义取消

\{n\}      表示其前面的字符恰好出现n次

\{n,\}     表示其前面的字符出现不小于n次

\{n,m\}    表示其前面的字符至少出现n次,最多出现m次
位置参数变量
$n  n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}

$*  这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体

$@  这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待

$#  这个变量代表命令行中所有参数的个数
文件查看
head -n fileName
tail -n fileName
tail -f fileName
less
more
cat
提取数据
# 提取数据
df -h /dev | grep -v Filesystem | awk '{print$4,$5}'
df -h | grep -v Filesystem | awk '{print $4 " " $5}' | cut -d "%" -f 1
df -h | grep -v Filesystem | awk '{print $4 " " $5}' | awk '{FS="%"} {print $1}'
cat /etc/passwd | awk 'BEGIN{FS=":"} {print $1 " " $7}'
cat /etc/passwd | awk 'BEGIN{FS=":"} END{print "end"} {print $1 " " $7}'

获取目录空间使用量
df -h | sed '1d' | awk '{print$4" "$5}' | awk -F"%" '{print $1}'|awk NF
df -h | sed '1d' | awk '{if($4~"%")print$4} {if($5~"%")print$5}' | sed 's/%//g'
df -h | sed '1d' | awk '{if($5~"/")print$5; if($6~"/")print$6}'
文件操作
ls /root/.ssh/ | grep id_rsa.pub                          查询文件是否存在
stat fileName                                             显示指定文件的相关信息
scp -r -P 22 fileName root@ip:/dir/                       传速文件
find / -type f -name *.xml | xargs grep -i abc            文件的查找
find / -type d | grep dir*                                目录的查找
find /data/app -maxdepth 2 -type d -empty                 查询限制层数的空目录
find /data/app -maxdepth 2 -type d ! -empty               查询限制层数的非空目录
df -h                                                     显示文件系统信息
mount -l                                                  查询系统中挂载的设备

du -sh                                       查询当前目录的总占用空间大小
du -ah / –-max-depth=1                       查询当前各个目录及文件的大小
du -b fileName | awk -F '\t' '{print$1}'     提取查询文件大小信息
du -s /usr/* | sort -rn | head -10           选出占空间排在前面的10个(字节排序)
du -s /usr/* | sort -rn | tail -10           选出占空间排在后面的10个(字节排序)

grep -i、-v、-n、--color=auto                grep忽略大小写、取反字符、输出行号、搜索出的关键字用颜色显示

wc <fileName>                               统计指定文本文件的行数、字数、字符数

sed -i 's/old/new/g' fileName                sed直接修改原文件全部匹配字符
sed -i '1s/old/new/g' fileName               sed直接修改原文件第1行匹配字符
sed    's/old/new/g' fileName                sed不修改原文件,仅输出

cat /etc/passwd|awk -F ":" '{print$1}'               awk提取用户名列表
cat /etc/passwd|cut -d ":" -f 1                      cut提取用户名列表
-F、-d分隔符 -f列号

#批量修改文件内容字符
#在当前目录查询包含字符abc的文件列表,并且把字符abc替换为字符def
for i in `find . -type f|xargs grep -l abc`;do sed -i 's/abc/def/g' $i;done
进程查找
jps | awk '{print$1}'|awk '{printf("%s|",$0)}END{printf("\n")}' pid多端口查询

ps -ef|grep -E '8080|9090'                                 #同时查询多个端口

ps -aux | grep pid                                         #根据pid查找
ps -ef  | grep path                                        #根据path查找
lsof -i:port                                               #根据port查找
cat /proc/pid/status                                       #进程的状态
State(运行、睡眠、僵尸)
ssh
默认是22                                         ssh协议端口号
/etc/ssh/ssh_config                              修改ssh服务端口号,配置项Port
service sshd     start/stop/restart              服务启动/停止/重启
/etc/init.d/sshd start/stop/restart              服务启动/停止/重启
网络命令
/etc/sysconfig/network-scripts                              网卡配置文件位置
service network restart                                     重启网卡
/etc/init.d/network restart                                 重启网卡
ifconfig                                                    #网络配置命令
wget                                                        #下载命令
traceroute ip或域名                                         #路由追踪
telnet ip port                                             #端口连通性检查

#http请求
curl -X POST --cookie 'a=b' -H 'a:b' -H 'Content-Type:application/json' -d '{"a":"b","c":"d"}' --insecure 'https://ip:port/a/b'
参数含义:
-X          请求方式 GET POST
--cookie    添加cookie
-H          添加header
-d          请求体
--insecure  使用https请求时,忽略SSL验证

ssh -v -p port root@ip # -v
#调试模式,返回connection established 端口通,connection refused 不通
磁盘挂载、卸载
列出磁盘信息:
fdisk -l
blkid
lsblk
more /proc/partitions

mount挂载
mount /dev/[sdb] [/mnt]
mount [-t ntfs] /dev/sd /appdata


机器重启后自动挂载
echo '/dev/sdb1 /appdata ext4 defaults 0 0' >> /etc/fstab

卸载
umount /appdata

mount -a   将/etc/fstab 中定义的全部挂载


lsblk -a              显示所有设备信息
lsblk -f              显示文件系统信息
lsblk /dev/sda        列出指定磁盘信息

mount                 查询已挂载的文件信息

mount /dev/sdb /data  临时挂载命令

umount /dir           临时卸载挂载

blkid                 显示所有设备信息
blkid /dev/sda1       显示指定设备信息

机器重启后自动挂载硬盘的方式
1、挂载命令写入到/etc/rc.local,命令最好写绝对路径如:mount /dev/sdb /data
2、配置开机自动挂载的文件 /etc/fstab (fstab文件系统挂载表)
如添加挂载配置:/dev/sdb /data  ext4    defaults        0 0

fdisk -l        列出硬盘信息
fdisk /dev/sdb  操作硬盘分区
p print         输出磁盘分区信息
n new           创建分区
d delete        删除分区
w write         保存并退出
q quite         退出不保存
资源信息
vmstat [刷新延时] [刷新次数]                                 系统资源监控
top P、M、N(pid排序)、q(退出)                                top命令
free -h                                                     查看内存使用状态
fdisk  -l                                                   列出磁盘和分区情况
/var/log/messages                                     日志信息路径(大部分错误)
/etc/rc.d/rc.local                                    开机自启动脚本存放位置
/etc/init.d/                                          启动脚本位置
系统信息
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l     查看物理CPU的个数
cat /proc/cpuinfo |grep "processor"|wc -l                  查看逻辑CPU的个数
cat /proc/cpuinfo |grep "cores"|uniq                       查看CPU是几核
cat /proc/cpuinfo |grep MHz|uniq                           查看CPU的主频

uname -a                                                   查看系统内核信息
uname -r                                                   内核版本
uname -m                                                   位数
cat /etc/issue  /etc/redhat-release                        发行版本
uptime                                                     持续在线时间
cat /proc/cpuinfo                                          查询cpu信息
lscpu                                                      查询cpu信息

reboot                                                重启
reboot  -w                                            模拟重启(仅写入开关日志)
yum命令
yum installremove、search、list、info                      yum的操作
yum clean packages                                          yum清除缓存

yum  install  -y lrzsz   (rz -be file  sz -be file)         lrzsz(上传、下载)
swap磁盘内存禁用
1、禁用SWAP分区:
swapoff /swapfile

2、删除SWAP分区:
rm /swapfile

3、/etc/fstab文件中删除相关配置:vim /etc/fstab
#/swapfile swap swap defaults 0 0
jar包解压后修改文件再压缩
解压:jar -xvf *.jar
压缩:jar -cvfM0 *.jar ./*
压缩包
tar -cvf file.tar dir                                   tar文件
tar -xvf file.tar -C /rbc/

tar -zcvf file.tar.gz dir                              tar.gz文件
tar -zxvf file.tar.gz -C /rbc/

zip -r file.zip dir                                    zip文件
unzip file.zip -d /rbc/

tar -zxvf file.tar.gz  a*.jar                          解压压缩包tar.gz中指定的文件


tar -jxvf *.tar.bz2                                   tar.bz2文件
tar -jcvf *.tar.bz2 *
iptables
chkconfig iptables off/on                              永久关闭/开启防火墙
service iptables stop/start/status                     防火墙状态查询
vim /etc/sysconfig/iptables                            配置iptables策略文件
iptables -L -n                                         查看iptables配置信息

INPUT、OUTPUT、FORWARD                                       filter表(三个链)
-j ACCEPT、DROP、REJECT                                      允许、丢弃、拒绝数据包
[!]-p、-s、-d                                                匹配协议、源地址、目标地址
[!]--sport--dport                                          匹配源端口、目标端口
-A、-I、-D、-F                                               添加(尾部)、插入、删除、清空规则

从上往下依次执行,发现匹配规则时停止继续向下执行                     规则执行顺序

service iptables save                                       保存防火墙配置(否则重启即失效)

iptables -L -n --line-number                                显示规则列表(含行号)
iptables -D INPUT num                                       删除规则

-m multiport --dports 70,80,90                              同时配置多个不连续的端口

iptables -A INPUT -p tcp -s IP -j DROP                      禁止tcp协议的特定IP访问

iptables -I INPUT -p tcp --dport 8080 -j DROP               禁止tcp协议访问指定端口

iptables -I INPUT -p tcp -s IP --dport 8080 -j ACCEPT       允许tcp协议特定ip访问指定端口

iptables -I INPUT -p tcp --dport 8090 -j ACCEPT             允许所有tcp协议IP访问指定端口

iptables -I INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT       允许本机访问本机

--dport 8090,8081,8082                                      同时写多个端口
--dport 8000:9000                                           同时写端口范围
iptables示例
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

对22端口开放
-A INPUT -m state --state NEW  -p tcp --dport 22 -j ACCEPT

对7001端口开放
-A INPUT -m state --state NEW  -p tcp --dport 7001 -j ACCEPT

屏蔽80809090端口
-I INPUT -p tcp -m multiport --dports 8080,9090 -j DROP

对ip地址127.0.0.1127.0.0.2接受访问
-I INPUT -m state --state NEW -p tcp -s 127.0.0.1,127.0.0.2 -j ACCEPT


-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibite
COMMIT
iptables示例
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="127.0.0.1" accept'

firewall-cmd --reload

firewall-cmd --list-all-zone
firewalld
firewall-cmd --version                                     版本查看
systemctl start/stop/restart/status firewalld              启动/停止/重启/状态
systemctl enable/disable firewalld                         开机启动(开启/禁止)
firewall-cmd --reload                                      重载防火墙规则
firewall-cmd --list-all                                    查看防火墙规则
firewall-cmd --state                                       防火墙状态查询
firewall-cmd --zone=public --list-ports                    查看已打开的所有端口

firewall-cmd --permanent --zone=public                     防火墙前缀

--add-rich-rule='rule family="ipv4"                        添加ip段连接3306防火墙
--remove-rich-rule='rule family="ipv4"                     删除ip段防火墙
source address="192.168.0.0/16"
port port="3306" protocol="tcp" accept'

--add-port=10001-11999/tcp                                 添加指定范围端口开放访问
--remove-port=8080/tcp                                     删除开放端口访问

--add-source=173.245.48.0/24                               添加指定IP段访问
--remove-source=173.245.48.0/24                            删除指定IP段访问

示例
firewall-cmd --permanent --zone=public --add-port=80/tcp      开启一个端口
firewall-cmd --permanent --zone=public --remove-port=9898/tcp 关闭一个端口

// 还可以通过修改配置文件的方式设置防火墙端口
文件:/etc/firewall/zones/public.xml
缓存清理
虚拟文件系统                                                /proc
sync 将缓存刷到磁盘中                                       手动释放缓存
echo 1 > /proc/sys/vm/drop_caches
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
echo 3 > /proc/sys/vm/drop_caches                         释放后值改为默认
sync && echo 3 | tree /proc/sys/vm/drop_caches            释放缓存

lsof | grep delete   kill掉这些进程                         磁盘空间满了找不到占用的文件
rpm(Redhat Package Manager )
rpm -qpi *.rpm                                            查询安装包信息

rpm -ivh *.rpm                                            安装软件
rpm -ivh--test *.rpm                                      安装测试,非真实安装
rpm -Uhv *.rpm                                            升级软件

rpm -e jdk                                                卸载jdk

rpm -ql  包名                                             查询已安装软件包安装位置
rpm -q   包名                                             查询软件包是否安装
rpm -qa | grep jdk                                       查询已安装的jdk

rpm -qf fileName                                         查询系统文件所属哪个软件包
ftp相关
https://blog.csdn.net/qq_31130741/article/details/114986351
https://blog.csdn.net/wqh0830/article/details/104684697

yum -y install vsftpd   安装ftp服务

service vsftpd start    启动ftp服务

service vsftpd restart  重启ftp服务

service vsftpd status   查看ftp服务状态

chkconfig vsftpd on     开机启动ftp服务

查看服务是否启动成功
# netstat -an | grep 21
tcp    0   0 0.0.0.0:21         0.0.0.0:*          LISTEN
如果看到以上信息,证明ftp服务已经启动成功

ftp虚拟用户
配置文件 /etc/vsftpd/vsftpd.conf 中自定义虚拟用户位置
user_config_dir=/etc/vsftpd/vuser_conf

虚拟用户密码文件/etc/vsftpd/vuser_passwd.txt

ftp IP                                                  linux连接ftp命令
命令行操作
ctrl + a/e                                               移动到开头/结尾
ctrl + f/b                                               移动一个字符前/后

ctrl + ←/→                                               移动整个单词前/后
alt  + f/b                                               移动整个单词前/后

ctrl + h/d                                               删除光标前/后一个字符

ctrl + w                                                 删除光标前的一个单词

ctrl + u                                                 删除行首到光标所有字符
crtl + k                                                 删除光标到行尾所有字符
ctrl + y                                                 粘贴ctrl+k/u/w删除文本

ctrl + r                                                 搜索命令行使用过的历史记录
ctrl + g                                                 从执行ctrl+r命令模式中退出
vim操作
:! ls /usr/local/                                        在vim窗口中执行命令

1.esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;     批量添加注释(esc)
2.选择需要注释的多行;
3.按下键盘(大写)"I"键,进入插入模式;
4.然后输入注释符("#"等);
5.最后按下"Esc"键。

1.esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;      批量删除注释(esc)
2.需要注释的多行;
3.按下d键

:n1,n2s/^/#/g                                             批量加注释
:n1,n2s/^#//g                                             批量取消注释

ctrl f、b                                                 翻整页
ctrl d、u                                                 翻半页
ctrl e、y                                                 翻一行
zz、zb、zt                                                光标居中、居下、居上

:set nu/nonu                                              显示/隐藏行号
gg、G                                                     跳到第一行、最后一行
nG                                                        跳到固定行

^/0、$                                                    跳到行首、行尾
w/W                                                       后一个单词头部
e/E                                                       后一个单词尾部
b/B                                                       前一个单词头部

d$                                                        删除光标到行尾
d^/d0                                                     删除光标到行首
dd                                                        删除当前行
ndd                                                       删除当前行开始的n行
dG                                                        删除当前行到最后一行
dnG                                                       删除第n行到最后一行
:[start],[end]d                                           根据范围删除

:s/old/new/                                               替换当前行第一个字符串
:s/old/new/g                                              替换当前行所有字符串

:%s/old/new/                                              替换每行第一个字符串
:%s/old/new/g                                             替换每行所有字符串

:n1,n2s/old/new/g                                         第n1与n2行之间每行第一个字符串
:n1,n2s/old/new/g                                         第n1与n2行之间替换每行所有字符串

:.,$-1d                                                   删除当前行到最后一行-1行
:! ls /usr/local/                                         在vim窗口中执行命令
生成文件的md5
md5sum fileName
shell
循环输出字符到文本文件
for i in `seq 10`; do echo "hello $i" >> data.txt; done;
定时任务
yum install contabs                安装crontab
systemctl enable crond             设置开机启动
systemctl start crond              启动crontab
service crond status               查看crontab服务状态

/etc/crontab                       定时任务配置文件路径
*(分)*(时)*(天)*(月)*(周)           crontab表达式
*/5 * * * *                        每5分钟执行一次
3,15 8-11 * * 1                    每个星期一的上午8点到11点的第3和第15分钟执行

crontab -e 或vim /etc/crontab      修改定时任务
crontab -l                         查看定时任务
/var/log/cron                      定时任务运行记录日志文件

crontab -e -u rbc                  指定用户执行脚本
网络命令
ifconfig                                                查看当前ip信息
ifconfig eth0 192.168.1.222 netmask 255.255.255.0 up    设置id
route add default gw 172.18.128.1                       设置网关
ip route show  或 route -n                              查看网关
cat /etc/resolv.conf                                    查看DNS
service ssh restart                                     重启ssh-server
/etc/init.d/ssh restart                                 重启ssh-server
cat /etc/ssh/sshd_config                                查看SSH端口Port参数

/etc/hosts                                              域名映射文件
安装中文字体
https://www.linuxidc.com/Linux/2016-09/135548.htm
yum源更换
/etc/yum.repos.d/                                       yum的安装目录
mv CentOS-Base.repo CentOS-Base.repo.bak                备份所有存在的文件

https://mirrors.aliyun.com                              打开镜像网站
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo           下载镜像
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/CentOS-Base-8.repo

yum clean all                                           清除yum的已有缓存
yum makecache                                           生成yum的缓存
设置yum源
yum包更新到最新
yum update

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
命令放后台执行方法
ctrl + z                                         挂起当前任务
jobs                                             查看任务,返回任务编号和进程号
bg %n                                            将编号为n的任务任务放后台运行
fg %n                                            将编号为n的任务任务转前台运行
ctrl+c                                           结束前台任务
jobs                                             查看在后台运行的任务
disown -h %n                       忽略后台任务HUP信号,退出登录不影响任务的执行
ps -ef|grep scp                    退出登录,再次进去查看任务运行状态和父进程号
部署获取当前目录
DIR=`cd $(dirname "${BASH_SOURCE[0]}");pwd`
echo "running dir [$DIR]"
cd $DIR
服务停止脚本
#!/bin/bash
JAR_DIR=`cd $(dirname "${BASH_SOURCE[0]}");pwd`
echo "running dir [$JAR_DIR]"
cd $JAR_DIR
HERE=`pwd`
PID=`ps -ef |  grep $HERE | awk '/java/' | awk '{print $2}'`
if [ "$PID" != "" ] ;then
    echo 'kill $JAR_DIR process'
    kill -9 $PID
fi
echo ">>>>>>>>>> server stop......"
服务启动脚本
#!/bin/bash
export JAVA_HOME="/usr/local/java"
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

JAR_DIR=`cd $(dirname "${BASH_SOURCE[0]}");pwd`
HERE=`pwd`

JAR_NAME=`find . -name "*SNAPSHOT.jar"`

JVM_OPTS="-server -Xms1g -Xmx1g -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$JAR_DIR/logs"
JAVA_OPTS=" -Dfile.encoding=UTF-8"

if [ "$1" == "debug" ]; then
     echo ">>>>>>>>>> mode is debug"
           java $JVM_OPTS $JAVA_OPTS -DPWD=$HERE -jar $JAR_NAME -DMODE=DEBUG
     echo "java $JVM_OPTS $JAVA_OPTS -DPWD=$HERE -jar $JAR_NAME -DMODE=DEBUG"
else
     echo ">>>>>>>>>> mode is normal"
           java $JVM_OPTS $JAVA_OPTS -DPWD=$HERE -jar $JAR_NAME > /dev/null 2>&1 &
     echo "java $JVM_OPTS $JAVA_OPTS -DPWD=$HERE -jar $JAR_NAME > /dev/null 2>&1 &"
fi
echo ">>>>>>>>>> server start......"
1、shell条件判断语句
# 1、单分支if条件语句
if [ 条件判断 ]
    then
        程序
fi

或者

if [ 条件判断 ]; then
    程序
fi

例如:判断分区使用率
rate=$(df -h | grep "/dev/sda1" | awk '{print $5}' | cut -d "%" -f1)
if[ $rate -ge 80 ]; then
    echo "warning /dev/sda1 is full"
fi

# 2、双分支if条件语句
if [ 条件判断式 ]
    then
        条件成立时,执行
    else
        条件不成立时,执行
fi

# 3、多分支if条件语句
if [ 条件判断1 ]
    then
        条件1成立时执行
elif [ 条件判断2 ]
    then
        条件2成立时执行
......
else
    当条件都不成立时执行
fi

# 4、case语句
case $变量名 in
    "1")
        如果变量值等于值1,则执行
        ;;
    "2")
        如果变量值等于值2,则执行
        ;;
    "3")
        如果变量值等于值3,则执行
        ;;
    .............
    *)
        如果变量的值读不是以上的值,则执行
esac

# 5、for语句
for i in 1 2 3 4 5 6
    do
        echo $i
    done

for((i=1;i<=100;i=i+1))
    do
        echo $i
    done

# 6、while循环,从1加到100的程序
i=1
s=0
while [ $i -le 100 ]    #如果变量i的值小于等于100,则执行
    do
        s=$(($s + $i))
        i=$(($i+1))
    done
echo "the sun is:$s"

# 7、until循环,从1加到100的程序
i=1
s=0
until [ $i -gt 100 ]    #如果变量i的值大于100,则停止执行
    do
        s=$(($s + $i))
        i=$(($i+1))
    done
echo "The sun is: $s"
2、shell脚本条件判断
# 1、按照文件类型进行判断:
  -d 文件:判断该文件是否存在,并且是否为目录文件(是目录为真)
  -e 文件:判断该文件是否存在(存在为真)
  -f 文件:判断该文件是否存在,并且是否为普通文件(是普通文件为真)
  -L 文件:判断该文件是否存在,并且是否为符号链接文件(是符号链接文件为真)

  # 书写格式:test -e /usr/test && echo yes || echo no
  # 两边有空格:[ -e /usr/test ] && echo yes || echo no

# 2、安装文件权限进行判断
   -r 文件:判断该文件是否存在,并且是否该文件拥有读权限(有读权限为真)
   -w 文件:判断该文件是否存在,并且是否该文件拥有写权限(有写权限为真)
   -x 文件:判断该文件是否存在,并且是否该文件拥有执行权限(有执行权限为真)
   -u 文件:判断该文件是否存在,并且是否该文件拥有SUID权限(有SUID权限为真)
   -g 文件:判断该文件是否存在,并且是否该文件拥有SGID权限(有SGID权限为真)
   -k 文件:判断该文件是否存在,并且是否该文件拥有SBit权限(有SBit权限为真)

# 3、两个文件之间进行比较
  文件1 -nt 文件2:判断文件1的修改时间是否比文件2的新(如果新则为真)
  文件1 -ot 文件2:判断文件1的修改时间是否比文件2的旧(如果旧则为真)
  文件1 -ef 文件2:判断文件1是否和文件2的Inode号一致,可以理解为两个文件
  # 是否为同一个文件,这个判断用于判断硬链接是很好的方法

# 4、两个整数直接的比较
   整数1 -eq 整数2:判断整数1是否和整数2相等(相等为真)
   整数1 -ne 整数2:判断整数1是否和整数2不相等(不相等为真)
   整数1 -gt 整数2:判断整数1是否大于整数2(大于为真)
   整数1 -lt 整数2:判断整数1是否小于整数2(小于为真)
   整数1 -ge 整数2:判断整数1是否大于等于整数2(大于相等为真)
   整数1 -le 整数2:判断整数1是否小于等于整数2(小于相等为真)

# 5、字符串的判断
   -z 字符串:判断字符串是否为空(为空返回真)
   -n 字符串:判断字符串是否非空(非空返回真)
   字符串1 == 字符串2:判断字符串1是否和字符串2相等(相等返回真)
   字符串1 != 字符串2:判断字符串1是否和字符串2不相等(不相等返回真)
   例如:[ -z "$name" ] && echo yes || echo no
   例如:[ "$aa"=="bb" ] && echo yes || echo no

# 6、多重条件判断
   判断1 -a 判断2:逻辑与,判断1和判断2都成立,最终的结果才为真
   判断1 -o 判断2:逻辑或,判断1和判断2有一个成立,最终的结果就为真
   !判断:逻辑非,使原始的判断式取反
   例如:[ -n "$aa" -a "$aa" -gt 23 ] && echo yes || echo no
posted @   rbcd  阅读(212)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示