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" 获取之前或者之后的某个时间
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 ' 1 d' | awk ' {print $4" " $5}' | awk -F"%" ' {print $1}'|awk NF
df -h | sed ' 1 d' | awk ' {if ($4~"%")print$4} {if($5~" %")print $5}' | sed ' s/%//g'
df -h | sed ' 1 d' | 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列号
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
ps -ef | grep path
lsof -i :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
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
磁盘挂载、卸载
列出磁盘信息:
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 install 、remove 、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
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
屏蔽8080 、9090 端口
-I INPUT -p tcp -m multiport --dports 8080 ,9090 -j DROP
对ip地址127 .0 .0 .1 、127 .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
systemctl start/stop/restart/status firewalld 启动/停止/重启/状态
systemctl enable/disable firewalld 开机启动(开启/禁止)
firewall-cmd
firewall-cmd
firewall-cmd
firewall-cmd
firewall-cmd
source address="192.168.0.0/16"
port port ="3306" protocol="tcp" accept'
示例
firewall-cmd
firewall-cmd
// 还可以通过修改配置文件的方式设置防火墙端口
文件:/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服务
查看服务是否启动成功
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行之间替换每行所有字符串
:.,$-1 d 删除当前行到最后一行-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
命令放后台执行方法
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条件判断语句
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
if [ 条件判断式 ]
then
条件成立时,执行
else
条件不成立时,执行
fi
if [ 条件判断1 ]
then
条件1成立时执行
elif [ 条件判断2 ]
then
条件2成立时执行
......
else
当条件都不成立时执行
fi
case $变量名 in
"1" )
如果变量值等于值1,则执行
;;
"2" )
如果变量值等于值2,则执行
;;
"3" )
如果变量值等于值3,则执行
;;
.............
*)
如果变量的值读不是以上的值,则执行
esac
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
i=1
s=0
while [ $i -le 100 ]
do
s=$(($s + $i ))
i=$(($i +1 ))
done
echo "the sun is:$s "
i=1
s=0
until [ $i -gt 100 ]
do
s=$(($s + $i ))
i=$(($i +1 ))
done
echo "The sun is: $s "
2、shell脚本条件判断
-d 文件:判断该文件是否存在,并且是否为目录文件(是目录为真)
-e 文件:判断该文件是否存在(存在为真)
-f 文件:判断该文件是否存在,并且是否为普通文件(是普通文件为真)
-L 文件:判断该文件是否存在,并且是否为符号链接文件(是符号链接文件为真)
-r 文件:判断该文件是否存在,并且是否该文件拥有读权限(有读权限为真)
-w 文件:判断该文件是否存在,并且是否该文件拥有写权限(有写权限为真)
-x 文件:判断该文件是否存在,并且是否该文件拥有执行权限(有执行权限为真)
-u 文件:判断该文件是否存在,并且是否该文件拥有SUID权限(有SUID权限为真)
-g 文件:判断该文件是否存在,并且是否该文件拥有SGID权限(有SGID权限为真)
-k 文件:判断该文件是否存在,并且是否该文件拥有SBit权限(有SBit权限为真)
文件1 -nt 文件2:判断文件1的修改时间是否比文件2的新(如果新则为真)
文件1 -ot 文件2:判断文件1的修改时间是否比文件2的旧(如果旧则为真)
文件1 -ef 文件2:判断文件1是否和文件2的Inode号一致,可以理解为两个文件
整数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(小于相等为真)
-z 字符串:判断字符串是否为空(为空返回真)
-n 字符串:判断字符串是否非空(非空返回真)
字符串1 == 字符串2:判断字符串1是否和字符串2相等(相等返回真)
字符串1 != 字符串2:判断字符串1是否和字符串2不相等(不相等返回真)
例如:[ -z "$name " ] && echo yes || echo no
例如:[ "$aa " =="bb" ] && echo yes || echo no
判断1 -a 判断2:逻辑与,判断1和判断2都成立,最终的结果才为真
判断1 -o 判断2:逻辑或,判断1和判断2有一个成立,最终的结果就为真
!判断:逻辑非,使原始的判断式取反
例如:[ -n "$aa " -a "$aa " -gt 23 ] && echo yes || echo no
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)