草庐IT

Linux

Schieber 2023-03-28 原文

一. 为什么学习 Linux 命令?

​ 大型企业高并发的 Java 应用程序都是部署在大型服务器之上的,而服务器的操作系统一般是使用高性能的 Linux(或Unix)的操作系统,不是 Windows 操作系统,所以编程人员需要在服务器上部署程序,就需要与服务器交互;Linux 命令成为程序员一个很必要的技能

二. 在 Linux 系统干什么事?

  • 部署 Web,C++等应用程序
  • 定时调度:脚本(脚本中调度程序)
  • 与数据库交互统计数据:日统计、月统计
  • 错误数据修复
  • 用户个性化数据统计
  • 数据稽核预警
  • 基于 Linux 平台的数据计算:例如一个月的全省联通用户的详单金额统计
  • ......

三. Linux 介绍

​ 大型服务器的的主机操作系统一般分为 Linux 和 Unix,IBM 主机一般安装 Linux 系统,而 HP主机一般安装 Unix 系统,两种操作系统的命令有细微的差异,但 Linux 是建立在 Unix 之上的,所以 Linux 命令适用 Unix,并且 Linux 命令严格区分大小写

举例:

联通核心系统

11台专用 Web 服务器,负载均衡;8台应用服务器

http://130.75.1.10:8080/CRM_WEB

http://192.168.3.249:8080/CRM_WEB

http://130.75.1.82:8080/CRM_WEB

http://192.168.1.249:8080/CRM

BEA:WebLogic

IBM:WebSphere

四. Linux 命令

命令格式:

命令名 [选项] [命令参数];

命令,选项,参数三者用空格隔开;

命令名必须得有,选项和命令参数可以没有;

命令 描述
man ls 帮助命令:查找命令的使用方法(查看 ls 命令的使用)
cd 改变路径(Change Director):注意相对路径和绝对路径 /root/user/uuu ../../../../user/io/
cd - 快速回到之前的路径(后退)
pwd 当前所在目录
ls (List): 查看当前目录下的文件及文件夹
ls -a 显示隐藏文件
ls -l 以长格式的形式查看当前目录下所有可见文件的详细属性
ls -lt 以更新时间为顺序使用长格式列出信息
ls -ltr 对输出文件进行各种排序
ls -p 只给目录添加/
ls -lt|more 空格键:一屏一屏翻页;Enter:一行一行翻页
创建相关命令:
命令 描述
touch 文件名 创建一个空文件(很少用)
> 文件名 重定向方式创建一个文件,如文件没有则创建,有则清空追加
cat grf.sh > 文件名 创建一个文件
>> 文件名 重定向方式创建一个文件(StringBuffer.append()
cat grf.sh >> 文件名 重定向方式创建一个文件
mkdir 文件夹名称 创建一个文件夹
vi 编辑器命令创建文件
复制相关命令:
命令 描述
cp 文件名1 文件名2 复制文件或目录
cp -r 文件夹1 文件夹2 复制文件或文件夹都可以
mv 对象1 对象2 剪切,重命名且能操作文件夹
删除相关命令:
命令 描述
rm 文件名 删除文件
rm -r 文件夹名称 删除文件夹
rm -rf 文件夹 文件或文件夹都可以删除
查看相关命令:
命令 描述
cat 文件名 显示文件内容
more 文件名 以一页一页的形式显示,逐页阅读
cat 文件名|more 回车键(一行一行查看);空格键(一版一版查看)
head -5 文件名 查看文件前五行
cat 文件名|head -5 查询前五行
tail -5 * 查看尾五行
grep 匹配搜索
文件名|grep "搜索值" 过滤搜索
命令汇总:
命令 描述
pwd 自己所在的位置
mkdir 创建文件夹
su 切换用户
su - root 切换到 root 用户,向上切换需要密码(鉴权),由高级权限用户切换到低级用户无需鉴权
whoami 当前用户
exit 退出到上一次的用户
touch a 创建一个空文件夹
cp 拷贝文件
clear 清屏
mv 移动,源文件会没有了
gzip 文件名 文件名.gz 压缩文件
gunzip 文件名.gz 解压缩文件
tar -cvf 文件名.tar 打包一个 tar 文件
gzip 文件名.tar 压缩 tar 文件
tar -czvf 文件名.tar 打包压缩一个 tar
gunzip 文件名.tar.gz 解压缩
cat 文件名.tar|tar -xvf - 显示 tar 文件内容
cat 文件名.tar.gz|tar -xzvf - 显示 gzip 压缩包文件内容
zcat 文件名.tar.gz|tar -xvf - 显示压缩包文件内容
rm 文件删除
rm -rf 删除文件或文件夹(慎用)
grep -l 关键字 只列出相关的文件名
grep -n 关键字 列举出文件名,以及文件中出现的那行代码
VI 编辑器命令:

VI 进来默认是命令行状态

状态的转变通过命令实现(命令行状态,编辑状态)

操作指令 描述
ESC 键 功能切换键,从编辑状态回到命令行状态
h,l,k,j 键 左右上下
i 在前面追加
shift + i 回到当前行首列
a 在后面追加
shift + a 回到当前行尾列
x 删除一个字母(当前光标处的内容)
r 替换当前字母
cw 替换一串字母,以空格为分隔(change word)
yy 复制
p 黏贴
nyy p 复制n行,n代表数字
dd 删除1行
ndd 删除n行,n代表数字
o 当前行下面加一空行
shift + o 当前行上面加一空行
shift + j 行合并
shift + d 删除当前光标到行尾的所有内容
ctrl + g 得到当前文本的总行数
shift + g 快速回到最后一行
:1 快速回到第一行
:set number 给文本一个虚拟的行号
:wq! 保存并退出
:q! 退出不保存
:w! 保存而不退出
/字符串 查找字符串
:%s/目标串/结果串/g 替换字符串
:%s/被替换/替换/g 全局替换,将String“被替换”替换为“替换”
:%s/^#//g 字符串替换
:r bb.txt 读取 bb.txt 文件进来
> 定向覆盖
>> 重定向追加
Shell 脚本编程

文件名以 .sh 作为结尾,使用 VI 编辑器命令编写本质上是许多 Linux 命令的集合

Shell 脚本完成某项功能运行.sh脚本名将Shell 脚本持久化到磁盘中

date +%Y
date +%m%d%H%M%s
for cityCode in 1 2 3
do
echo $cityCode
done
# ^表示开头开头替换,#表示全局
:%s/^/#/g
cat txt|grep -v ^#|while read city
do
echo ${city}
done

cat 1.txt|awk '{a+=$2}END{printf "%10.2f\n",a}'

# 默认分隔符:空格
cat txt|awk '{print 50}'

cat txt|awk 'FS=""{print $0}'

cat txt|

# 指定分隔符
cat 1.txt|awk 'FS="|"{print $1}'

cat txt|awk '{sum+=$2}END{printf "%10.2f\n",sum}'

# 查看后台运行进程
ps -ef 

ps -ef|grep vi

kill -9 3947

ps -ef|grep 文件名|grep -v grep|awk '{print "kill -9",$2}' |sh

ps -ef|grep 文件名|grep -v grep|awk '{print $2}'|xargs kill -9

# 排序,剔重
cat a.txt|sort -u
diff txt1 txt2
查找文件,且文件的全路径名称中含有关键字 xxx yyy
find . -type f|grep xxx|grep yyy
查找文件夹,且文件夹的全路径名称中含有关键字 xxx yyy
find . -type d|grep xxx|grep yyy
在所有的日志文件中定位在哪些日志文件中出现过关键字
grep -l "18679155625"  *
定位日志在文件中哪一行出现过关键字
grep - n "18679155625"  *
grep -l "18679155625"  *|wc -l (L)
重中之重
压缩
gzip 文件名 ---> 文件名.gz
gunzip 文件名.gz --->  文件名
第一种方法:先 tar 包,后压缩
tar -cvf a.tar a --->  a.tar
gzip a.tar ---> a.tar.gz

# 先解压缩,再解包
gunzip a.tar.gz ---> a.tar
# 还原成功
cat a.tar|tar -xvf - ---> a 
第二种方法: 一步到位
tar -czvf a.tar.gz  
cat a.tar.gz|tar -xzvf -
压缩还有一种:只支撑文件压缩(unix支撑)
compress a.txt   	--->   a.txt.Z
uncompress  a.txt.Z --->  a.txt
我也不清楚下面写的都是啥了
linux操作系统的注释:`#`

ls a[0-1]文件名.txt

# 模式转换后,命令将来可以调用
sh ksh
set -o vi
esc /关键字 回车 n

# 压缩
compress a.txt  a.txt.Z	

# 解压缩
uncompress 

# Linux 系统中定时调度的一个配置文件
crontab

# 查看使用(看看而已)
crontab -l

# 编辑使用(编辑而已)慎重
crontab -e
# 删除使用(你猜)
crontab -r drop      

# 杀进程
ps -ef|grep vi|grep -v grep|
awk '{print $2}'|xargs kill -9

# 后台运行
nohup sh 文件名.sh &

# 自动调度
crontab

# 看俺自己
crontab -l 

# 编辑
crontab -e 

# 查看内存
df -h 

vi function.sh

# 函数
get() {
echo ok
}

get

:wq!

sh function.sh

# 文件传输,传输接收
get() {
f
tp 192.168.1.1 <<!
user scott admin
# 异地目录
cd /others/file
# 本地目录
lcd /local/file
# 传输编码方式
bin
prompt
get 文件名.txt
bye
!
}

# 批量接受
mget(){
f
tp 192.168.1.1 <<!
user scott admin
# 异地目录
cd /others/file
# 本地目录
lcd /local/file
# 传输编码方式
bin
prompt
mget 文件名*.txt
bye
!
}

# 单独接收和传输需要 get 和 put
# 批量接收和传输只需要 mget 和 mput 以及在文件名后面加上*.txt就可以了
get_ftp1() {
ftp -n 192.168.1.888 <<!
use username password
# 异地目录
cd  
ls -lt
bye
!
}

get_ftp2(){
ftp -n 192.168.1.888 <<!
use username password
# 本地目录
lcd
# 异地目录
cd 
prompt
mget ${file_name}
bye
!
}


get_ftp3(){
ftp -n 192.168.1.888 <<!
use username password
# 本地目录
lcd
# 异地目录
cd
prompt
mput 20150311.txt
bye
!
}

get_ftp4(){
sqlplus  username/password@oracl <<!
select 'grf',to_char(sysdate,'yyyymmdd') from dual
/
bye
!
}

get_ftp1|awk '{print $7}'|while read file_name
do
get_ftp2
done

get_ftp4|grep grf|awk '{print $2}'|while read stat_date
do
echo ${stat_date}
done

vi test.sh

cat txt1|while read stat_date
do
cat txt2|while read city
do
echo $stat_date $city
done
done

report_day_t
stat_date 20150809

# 调用存储过程
delete report_day_t where stat_date='20150809';
insert into report_day_t select * from xxx;
--- 2小时

ps -ef|grep list1.sh

# 大于
gt greater than
# 大于等于
ge greater equals
lt less than
le
eq

# 开始写 sh
vi jk.sh

echo success >> jk.sh

ls -lt

# 给用户赋权
chomod 777 kj.sh

sh kj.sh
ls -lt
crontab -e

while sleep 3

> do
> date 
> done

find /|grep 

# 挂 crontab 的自动调度
cat kj*
cd /home/xiqingbo
echo success >>xqb.log
crontab -1
55 15 * * * /home/xiqingbo/kj.sh

vi txt

0791
0792
0793

:wq!

vi main.sh
cd /home/ztkj

cat txt|while read city
do
nohup sh list.sh ${city} &
done

:wq!

vi list.sh

city=$1
echo ${city} begin
sleep 5
echo $city end

:wq!

sh main.sh

vi list.sh

city=$1
echo ${city} begin >>grf.log
sleep 180
echo $city end >> grf.log

# 实时监控日志动态
tail -f grf.log     

五. 你是否使用过 UNIX/LINUX 系统,用来做什么?

  1. Shell 脚本开发,压缩备份
  2. 检查系统磁盘的使用率df -h 85%预警
  3. 检查系统 CPU 内存以及 IO 的使用率:top命令
  4. 文件的上传和下载
  5. 编写 Shell 脚本,调用数据库存储过程实现日月统计,并且挂载到 crontab 中实现定时调度

有关Linux的更多相关文章

  1. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  2. Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理 - 2

    文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分

  3. ruby - 如何在 Ruby 中获取 linux 系统信息 - 2

    如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack

  4. ruby - rbenv:在 Linux Mint 上找不到 gem 命令 - 2

    我在LinuxMint17.2上。我最近使用apt-getpurgeruby​​删除了ruby​​。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,

  5. ruby - 在 Linux 上编译 Ruby 1.9.2 所需的先决条件? - 2

    我是Ruby和RoR的新手。我有一个带有Ubuntu镜像的干净Linode实例,我想从源代码编译Ruby而不是使用apt-get。我已经在谷歌上搜索了执行此操作的说明,但经过一些尝试后,当我尝试运行一些教程示例时,我不断收到有关缺少zlib和其他一些包的错误。任何人都可以给我详细的说明(或链接),教我如何在从源代码编译Ruby之前安装必要的必备包吗?我的目的是编译Ruby的最新稳定版本,然后安装Rubygems和Rails。提前感谢您的帮助!!! 最佳答案 Thisblogpost涵盖从源代码编译ruby​​所需的包和安装过程;它引

  6. Linux网络编程必备的POSIX API的细节 - 2

    目录POSIXAPI大集合五元组三次握手的过程,内核协议栈分析listen函数DDOS攻击,洪水攻击DDOS攻击的应对措施数据发送 怎么保证顺序?如何保证包地顺序到达(序号+确认应答机制+重传)TCP断开连接的过程问题1.大量的CLOSE_WAIT+FIN_WAIT2是为啥?time_wait状态存在的原因?POSIXAPI大集合五元组(sip,sport,dip,dport,protocol)三次握手的过程,内核协议栈分析内核协议栈中是有内核数据结构的.  我们send/write数据,都是先发送到内核协议栈中,然后由内核协议栈封装发送到物理介质中传输到对端的对端的接收过程也是经有内核协议栈

  7. Linux export 命令及如何删除export设置的环境变量 - 2

    背景:Linuxexport命令用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅限于该次登陆操作。语法:export[-fnp][变量名称]=[变量设置值]参数说明:-f 代表[变量名称]中为函数名称。-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。-p 列出所有的shell赋予程序的环境变量。实例:列出当前所有的环境变量#export-p//列出当前的环境变量值定义环境变量赋值#exportMYENV=7//定义环境变量并赋值添加环境变量:默认保存在

  8. Linux操作系统CentOS7安装Nginx[详细版] - 2

    Nginx安装1.官网下载Nginx2.使用XShell和Xftp将压缩包上传到Linux虚拟机中3.解压文件nginx-1.20.2.tar.gz4.配置nginx5.启动nginx6.拓展(修改端口和常用命令)(一)修改nginx端口(二)常用命令1.官网下载Nginxhttp://nginx.org/en/download.html这里我下载的是1.20.2版本,大家按需下载对应稳定版即可2.使用XShell和Xftp将压缩包上传到Linux虚拟机中没有XShell可以参考《Linux操作系统CentOS7连接XShell》3.解压文件nginx-1.20.2.tar.gz1)检查是否存

  9. 【Linux】初识Linux --指令Ⅰ - 2

    Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法,Linux…感兴趣就关注我吧!你定不会失望。目录1.ls显示当前目录下的文件内内容2.pwd-显示用户当前所在的目录3.cd-改变工作目录。将当前工作目录改变到指定的目录下1.cd-回到上一次待的工作空间2.cd..返回上一层目录1.相对路径:cd../aurora2.绝对路径:cd/home/aurora/lesson1/aurora3.cd~进入用户家目录4.cd/进入root目录4.mkdir-新建目录5.rmdir/rm-删除1.rmdir删除空文件夹2.rm删除1.rm-f2.rm-i3.rm-r1.ls显示当前目

  10. 从零开始学习Linux运维,成为IT领域翘楚(二) - 2

    文章目录🔥Linux系统目录结构🔥Linux用户和用户组🔥Linux用户管理🔥Linux系统目录结构文件系统组织结构⭐ /lib系统开机所需要最基本的动态链接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。⭐ /lost+found一般情况下是空的,当系统非法关机后,这里就存放了一些文件。⭐ /etc所有系统管理所需要的配置文件和子目录my.conf⭐ /usr用户的很多应用程序和文件都放在这个目录下。⭐ /bin是Binary的缩写,这个目录存放着经常使用的命令⭐ /sbin(usr/sbin、/usr/local/sbin)sbin就是peruse

随机推荐