网站编辑器无法显示,网站集群建设的意义,电商店铺图片,wordpress 设置七牛【shell】常用100个shell命令使用讲解 【一】文件操作命令【二】搜索命令【三】目录操作命令【四】权限操作命令【五】网络操作命令【六】进程和系统控制命令【七】文本操作命令【八】压缩与解压命令【九】磁盘使用管理命令【十】包管理命令【十一】进程管理命令【十二】环境变… 【shell】常用100个shell命令使用讲解 【一】文件操作命令【二】搜索命令【三】目录操作命令【四】权限操作命令【五】网络操作命令【六】进程和系统控制命令【七】文本操作命令【八】压缩与解压命令【九】磁盘使用管理命令【十】包管理命令【十一】进程管理命令【十二】环境变量命令【十三】系统信息发布相关命令【十四】系统控制命令【十五】文件编辑器命令【十六】其他常用命令【十七】案例【1】发布时拉取压缩包的案例【2】项目运行脚本案例1service.sh2stop.sh3start.sh4restart.sh 使用Shell脚本你可以编写一个任务然后让计算机去做而你可以去忙其他的事情你可以编写一个任务让计算机重复执行而不需要你每次在命令行手动输入你可以更灵活地处理任务比如管理用户管理程序等。就这样Shell脚本赋予你控制计算机的能力在你的指尖下一切尽在掌握。
【一】文件操作命令
以下是在Linux系统中操作文件的一些常用命令
1ls列出目录的内容
ls /home2cd改变目录
cd /home/user/Documents3pwd打印当前工作目录
pwd4cat查看文件内容
cat /etc/passwd5more分页查看文件内容
more /var/log/syslog6less反向分页查看文件内容
less /var/log/syslog7touch创建一个空文件或更改文件的访问和修改时间
touch /home/user/newfile.txt8cp复制文件或目录
cp /home/user/file.txt /home/user/Documents9mv移动或重命名文件或目录
mv /home/user/file.txt /home/user/Documents/newfile.txt10rm删除文件或目录
rm /home/user/unwantedfile.txt11find在文件系统中搜索文件或目录
find / -name *.log12grep在文件中搜索具有特定模式的行
grep error /var/log/syslog13head输出文件的开始部分
head -n 10 /var/log/syslog14tail输出文件的尾部
tail -n 20 /var/log/syslog15sort对文本文件的行进行排序
sort /etc/passwd16wc计算字数、行数和字节数
wc /var/log/syslog17cut从文件的每一行中剪切字节、字符和字段
cut -d: -f1 /etc/passwd18nano,vi,emacs常用的文本编辑器
nano /home/user/file.txt
vi /home/user/file.txt
emacs /home/user/file.txt19paste合并文件的行
paste file1.txt file2.txt【二】搜索命令
以下命令可以帮助你搜索文件或文本
1find在文件系统中搜索文件或目录
find / -name *.log2grep 在文本文件中搜索决定的文本模式
grep error /var/log/syslog3locate 基于文件名在数据库中快速找到文件
locate myFile.txt4which 返回可执行文件的路径
which java5ack特别为程序员设计的一款文件搜索工具。默认会忽略多数版本控制文件夹如.git, .svn等的内容
ack your_search_term6agThe Silver Searcher比ack更快的代码搜索工具同样默认忽略 .git 等版本控制文件夹中的内容
ag your_search_term7whereis此命令可用于查找二进制程序、源文件、手册页以及其他文件的位置
whereis ls8type此命令用于确定某个命令是内部 shell 命令、可执行文件还是别名
type pwd9apropos如果你只记得关于某个命令的部分信息你可以使用 apropos 命令来搜索帮助手册中的命令描述
apropos partition10alias如果你经常使用某些 Linux 命令你可以使用 alias 命令为这些常用命令创建一个短名以提升你的工作效率
alias lls -al【三】目录操作命令
以下是在Linux系统中操作目录的一些常用命令
1mkdir创建一个新的目录
mkdir /home/user/new_directory2rmdir删除一个空目录
rmdir /home/user/empty_directory3tree以树形结构列出目录的内容
tree /home/user/4du估计文件和目录的磁盘使用空间
du -sh /home/user/Documents5df显示磁盘使用空间
df -h【四】权限操作命令
在Linux系统中文件和目录的访问可以通过权限操作命令进行控制 1chmod更改文件或目录的权限
chmod 755 /home/user/file.txt
表示设置文件的主用户有读写和执行权限rwx 7同组的用户和其他用户有读和执行权限rx 5。2chown更改文件或目录的所有者和所属的组
chown newuser:newgroup /home/user/file.txt
表示将/home/user/file.txt的所有者更改为newuser所属的组更改为newgroup。 3chgrp更改文件或目录的所属组
chgrp newgroup /home/user/file.txt
表示将/home/user/file.txt的所属的组更改为newgroup。【五】网络操作命令
以下是在Linux系统中与网络相关的一些常用命令
1ping发送网络请求以测试网络连接
ping www.google.com2ifconfig显示或配置网络接口
ifconfig eth03netstat显示网络连接、路由表等网络状态信息
netstat -ntlp
4ssh远程登录或执行远程命令powershell
ssh userremote_host5scp在本地和远程系统之间安全地复制文件
scp /path/to/file userremote_host:/remote/path/6curl获取网络资源
curl www.google.com7telnet远程登录工具
telnet remote_host 238nslookup查询 DNS 名称服务器的记录
nslookup www.google.com9ftp在本地主机和FTP服务器之间建立FTP连接
ftp ftp_server10wget获取网络资源
wget www.google.com -o google.html 【六】进程和系统控制命令
以下是在Linux系统中管理进程和控制系统的一些常用命令
1ps显示当前进程的状态
ps aux2top动态显示运行中的进程 3kill发送信号以终止进程
kill 12344shutdown关闭机器
shutdown -h now5reboot重启机器 6logout退出登录会话
【七】文本操作命令
在编写或处理文本文件时下列命令可以帮助你完成各种复杂任务
1echo打印信息到终端。
echo Hello, World!2printf格式化并打印信息。
printf Name: %s\nAge: %d\n Alice 203sed流编辑器用于对文本文件进行特定的行处理和替换。
echo Hello, World! | sed s/World/Shell/g4awk在文本文件中进行模式扫描和处理语言。
echo -e name\tage\nAlice\t20\nBob\t22 | awk {if ($2 21) print $1}【八】压缩与解压命令
以下命令主要用于管理和操作文件压缩及解压
1tar创建、展开及管理tar包
tar -cvf archive.tar folder2gzip用于文件压缩或解压
gzip file3gunzip用于解压gzip压缩的文件
gunzip file.gz4zip/unzip创建和解压zip格式的压缩包
zip -r archive.zip folder
unzip archive.zip【九】磁盘使用管理命令
管理和查看磁盘使用情况
1df报告文件系统磁盘空间使用情况
df -h2du估计并报告文件及文件夹的磁盘使用情况
du -sh folder3fdisk对磁盘进行分区管理
sudo fdisk -l4hdparm查看或修改SATA/ATA磁盘参数
sudo hdparm -i /dev/sda【十】包管理命令
1apt-getAPT包处理工具用于处理包
sudo apt-get install package2dpkgDebian包管理器
sudo dpkg -i package.deb3yum高级软件包管理器用于处理rpm包
sudo yum install package4rpmRPM包管理器
sudo rpm -i package.rpm【十一】进程管理命令
查看和管理正在运行的进程
1ps报告进程当前状态
ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 225848 7836 ? Ss Nov10 4:05 /lib/systemd/systemd --system --deserialize 39
root 2 0.0 0.0 0 0 ? S Nov10 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? I Nov10 0:00 [kworker/0:0H]2top动态显示当前耗费系统资源最多的进程 3htop比top更友好的动态进程查看工具
htop4kill 终止或者发送一个信号到指定进程 5pkill条件地终止或者发送一个信号到指定进程
pkill process_name【十二】环境变量命令
查看或设置环境变量
1env显示当前所有的环境变量
输入env
输出PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binSHELL/bin/bashPWD/home/user2set显示当前shell所有的环境变量及函数 输入set
输出展示所环境变量以及函数3export设置或显示环境变量
输入
export VARNameValue
echo $VARName
输出结果
Value【十三】系统信息发布相关命令
有时你可能想要查看有关你的系统或硬件的信息。以下命令可以帮助你做到这一点
1uname会打印操作系统的名称
输入
uname
输出
Linux2hostname打印系统的主机名
输入
hostname
输出
myhostname3dmesg打印或控制内核环形缓冲区
输入
dmesg | less4df展示文件系统的磁盘空间使用情况
输入df -h
输出Filesystem Size Used Avail Use% Mounted onudev 962M 0 962M 0% /devtmpfs 200M 4.3M 196M 3% /run/dev/sda1 30G 4.7G 24G 17% /5free展示系统中未使用和已经使用的物理和swap内存
输入free -h
输出total used free shared buff/cache availableMem: 3.8G 487M 1.9G 122M 1.4G 3.0GSwap: 0B 0B 0B
6uptime展示系统已经运行了多久有多少用户正在登录以及系统负载
输入uptime
输出 16:14:30 up 43 min, 1 user, load average: 0.34, 0.36, 0.407last查看系统的重启和关机记录
输入last reboot8w 展示哪些用户正在登录
输入w
输出 16:17:51 up 1:42, 1 user, load average: 0.45, 0.47, 0.38USER TTY FROM LOGIN IDLE JCPU PCPU WHATuser tty1 14:36 1:42m 1.55s 0.06s w9who展示哪些用户正在登录和w命令相似但信息更少
输入who
输出 user tty1 2022-01-28 14:3610id展示当前用户的UID、GID以及所在的组 输入id输出uid1000(user) gid1000(user) groups1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)【十四】系统控制命令
在一些特殊情况下你可能需要进行一些系统控制操作。以下命令可以帮助你做到这一点
1halt关机
输入sudo halt2reboot重启系统
输入sudo reboot3shutdown关机或者重启和上述两个命令一样但是提供更多的选项
关闭系统sudo shutdown -h now
重启系统sudo shutdown -r now4passwd更改用户密码
更改密码passwd【十五】文件编辑器命令
Linux提供了多种命令行文本编辑器。以下这些可能是你需要知道的
1vi/vimvi是一个文本编辑器而vim是vi的改进版提供了更多的功能。 2nano一个简单易用的命令行文本编辑器。 3emac一个强大的文本编辑器也是一个定制化的计算环境。
【十六】其他常用命令
1man查看命令的帮助文档 2whatis显示一个命令的简单描述
输入whatis ls
输出 ls (1) - list directory contents3whereis查找命令的二进制文件、源文件及帮助文档位置
输入whereis ls
输出 ls: /bin/ls /usr/share/man/man1/ls.1.gz4which查找并显示给定命令的完整路径
输入which ls
输出/bin/ls5whoami打印当前有效的用户名
输入whoami
输出user6date显示或设置系统日期和时间
输入date
输出 Tue Dec 21 02:16:12 UTC 20217cal显示日历
输入cal
输出January 2022 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 8alias创建命令别名 9unalias删除别名 10history显示命令历史 11clear清除屏幕或窗口内容 12watch用于实时查看当前命令打印信息
输入watch -n 2 date
解释watch命令会每2秒运行一次date命令并实时显示输出【十七】案例
【1】发布时拉取压缩包的案例
#!/bin/bash# 设置根目录
BASE_DIR/home/damp/server/services# 获取当前时间格式为 YYYYMMDD_HHMM年、月、日、时、分
CURRENT_TIME$(date %Y%m%d_%H%M)# 以当前时间为父目录
TARGET_DIR$BASE_DIR/bushu_$CURRENT_TIME
TARGET_IND_DIR$TARGET_DIR/server-ind
TARGET_WEB_DIR$TARGET_DIR/sub-ind# 创建目标目录
mkdir -p $TARGET_IND_DIR
mkdir -p $TARGET_WEB_DIRecho 已创建目录: $TARGET_DIR# 进入目标目录
cd $TARGET_IND_DIR || exit
echo 进入目录: $TARGET_IND_DIR# 设置源目录
SOURCE_DIR/home/damp/server/services/damp-xingye-ind/lib
SOURCE_WEB_DIR/home/damp/web/pages/subapp/sub-ind# 复制以damp开头且包含ind的jar文件到当前目录
cp $SOURCE_DIR/damp*ind*.jar $TARGET_IND_DIR
echo 后端包复制成功# 复制前端包
cp -rf $SOURCE_WEB_DIR/* $TARGET_WEB_DIR
echo 前端包复制成功# 返回到根目录以便打包
cd $BASE_DIR || exit# 打包当前创建的目录为 .tar.gz 文件
TAR_FILEbushu_${CURRENT_TIME}.tar.gz
tar -czvf $TAR_FILE bushu_$CURRENT_TIME# 获取当前路径并输出完整的打包文件路径
FULL_PATH$(pwd)/$TAR_FILE
echo 已将目录 $CURRENT_TIME 打包为文件: $FULL_PATH# 打包完成后返回到根目录
echo 打包文件父目录: $BASE_DIR
【2】项目运行脚本案例
1service.sh
#!/usr/bin/env bash
source /etc/profile
source ~/.bash_profileprojectName$2
skywalking_service_ip$3
currentdate %Y%m%d%H%M%S
skywalking_agent_dir./skywalking/agent-msp/agent8.4
# 脚本运行目录的父目录
serviceDir$(cd $(dirname $0)/..; pwd)
logs$serviceDir/logs
# 进入脚本目录
cd $(dirname $0)portcat ../conf/bootstrap.yml | grep port | cut -c 9-
if [[ ${#port[]} 0 ]]; thenecho 未找到端口exit 1
elif [[ ${#port[]} 1 ]]; thenecho 找到多个端口 $portexit 1
fihealth_urlhttp://127.0.0.1:$port/actuator/health
up_urlhttp://127.0.0.1:$port/actuator/serviceregistry?statusUP
down_urlhttp://127.0.0.1:$port/actuator/serviceregistry?statusDOWN# 生成启动文件
if [ -n $skywalking_service_ip ]; thenecho sh ./service.sh start $projectName $skywalking_service_ip start.shecho sh ./service.sh stop $projectName $skywalking_service_ip stop.shecho sh ./service.sh restart $projectName $skywalking_service_ip restart.sh
elseecho sh ./service.sh start $projectName start.shecho sh ./service.sh stop $projectName stop.shecho sh ./service.sh restart $projectName restart.sh
fi
chmod x start.sh
chmod x stop.sh
chmod x restart.sh#if [ -n $skywalking_service_ip ]; then
# if [[ $target ~ dev ]]; then
# skywalking_service_ip10.99.137.136:11800
# else
# skywalking_service_ip12.99.76.69:11800
# fi
#fistart() {pidps -ef | grep java | grep $projectName | grep $port | awk {print $2}if [ -n $pid ]; thenecho 服务已存在请停止后再启动exit 1fiportLocknetstat -untlp | awk {print $4} | grep :$port$if [ -n $portLock ]; thenecho 端口$port被占用请停止占用端口的进程或者更换端口exit 1fimkdir -p $logs/gcJAVA_PATH../../../jdk/jre/bin/javaif [ -f javaPath.txt ]; thenJAVA_PATHcat javaPath.txtfiJAVA_OPTSif [ -f jvmOpts.txt ]; thenjvmOptscat jvmOpts.txtJAVA_OPTS$JAVA_OPTS $jvmOptselseJAVA_OPTS$JAVA_OPTS -Xms256m -Xmx256m -XX:MetaspaceSize256m -XX:MaxMetaspaceSize256m -XX:SurvivorRatio8fijavaVersionecho $( $JAVA_PATH -version 21 |awk NR1{gsub(//,);print $3})if [[ $javaVersion 11* ]]; thenJAVA_OPTS$JAVA_OPTS -Xlog:gc*:file$logs/gc/gc-$current.log:time,uptime,level,tagselseJAVA_OPTS$JAVA_OPTS -XX:PrintGCDetails -XX:PrintGCDateStamps -Xloggc:$logs/gc/gc-$current.logfiJAVA_OPTS$JAVA_OPTS -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPathdump
# JAVA_OPTS$JAVA_OPTS -Dspring.profiles.active$target -Dserver.port$portJAVA_OPTS$JAVA_OPTS -Dserver.port$portJAVA_AGENT_OPTS# -javaagent:/home/cloud/iast_agent.jar
# 如果为sit环境且存在iast的jar包则在启动参数中加入调用iast_agent.jar的命令# case $target in
# sit* | uat*)
# if [ -x /home/cloud/iast_agent.jar ]; then
# JAVA_AGENT_OPTS$JAVA_AGENT_OPTS -javaagent:/home/cloud/iast_agent.jar
# fi
# ;;
# *)
# ;;
# esacif [ -n $skywalking_service_ip ]; thenJAVA_AGENT_OPTS$JAVA_AGENT_OPTS -javaagent:$skywalking_agent_dir/skywalking-agent.jarJAVA_OPTS$JAVA_OPTS -Dskywalking.agent.service_name$projectName -Dskywalking.collector.backend_service$skywalking_service_ip
finohup $JAVA_PATH $JAVA_AGENT_OPTS $JAVA_OPTS -cp ../conf/:../../../driver/*:../../../ext/*:../lib/* com.hzyatop.xingye.Application --spring.config.additional-location../../../conf/bootstrap.yml /dev/null 21 sleep 5for ((i0;i90;i))docurl -s -X GET ${health_url} healthhealthcat health | grep status | grep UPif [ ${#health} -gt 10 ]; thenbreakelsepidNewps -ef | grep java | grep $projectName | grep $port | awk {print $2}if [ -n $pidNew ]; thenecho Waiting for start ...sleep 3elseecho Deploy Fail项目启动失败请到项目日志目录查看启动日志默认日志目录为$serviceDir/logsexit 1fifidonesleep 5curl -s -X POST -H Content-Type:application/vnd.spring-boot.actuator.v2json;charsetUTF-8 $up_urlsleep 5if [ ${#health} -gt 10 ]; thenecho Deploy Successexit 0elseecho Deploy Failexit 1fi
}stop() {pidps -ef | grep java | grep $projectName | grep $port | awk {print $2}if [ -n $pid ]; thenecho 正在下线服务...elseecho 服务已下线return 0fi# curl -s -X POST -H Content-Type:application/vnd.spring-boot.actuator.v2json;charsetUTF-8 $down_url
# if [ -n $skywalking_service_ip ]; then
# sleep 60
# else
# sleep 30
# fiecho 尝试 kill -15 $pid 旧服务kill -15 $pidsleep 5for ((i0;i20;i))dopidps -ef | grep java | grep $projectName | grep $port | awk {print $2}if [ -n $pid ];then sleep 1elseecho 服务下线成功return 0fidonepidps -ef | grep java | grep $projectName | grep $port | awk {print $2}if [ -n $pid ]; thenecho 尝试 kill -9 $pid 旧服务kill -9 $pidsleep 5fipidAps -ef | grep java | grep $projectName | grep $port | awk {print $2}if [ -n $pidA ]; thenecho 停止旧服务失败请手工停止exit 1fi
}help(){echo ---------------sh service.sh [options] [project] [env] [port] [skywalking_service_ip]----------------echo ---------------options: start | stop | restart ------------------------------------------------------echo ---------------project: 工程名称jar包前缀 ---------------------------------------------------------echo ---------------env环境 dev | sit | uat | prod-----------------------------------------------------echo ---------------skywalking_service_ipIP地址 --------------------------------------------------------
}# 操作命令
case $1 instart)start;;stop)stop;;restart)stopstart;;
*)help;;
esac
2stop.sh
sh ./service.sh stop damp-xingye-ind3start.sh
sh ./service.sh start damp-xingye-ind4restart.sh
sh ./service.sh restart damp-xingye-ind