扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
首先必须强调,Linux命令记忆的最佳方法就是在使用中记忆,伴随着使用场景的记忆是非常深刻且难以磨灭的,在使用过一段时间之后,大部分的常用命令都会成为你未来十年乃至更长时间都不会丢掉的记忆。如果没有特别强烈的要在短时间掌握命令行使用的需求,主要坚持使用一段时间就能自然而然的掌握大多数命令。
创新互联拥有十年成都网站建设工作经验,为各大企业提供做网站、成都网站建设服务,对于网页设计、PC网站建设(电脑版网站建设)、成都app软件开发公司、wap网站建设(手机版网站建设)、程序开发、网站优化(SEO优化)、微网站、域名与空间等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了很多网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等网站化运作于一体,具备承接各种规模类型的网站建设项目的能力。
假设你必须在短时间内掌握所有Linux命令,那该怎么办?我没有遇到过这种情况,但是可以提供一些思路。
第一步:使用man
这是最快速、最权威的学习方式。但是考虑到英语水平较差的同学,这又是一个非常痛苦的学习方式。不过别担心,这里用man只是让你对命令和他们的英文注解进行一个简单的了解,无需记忆,只要稍稍有点印象就可以了。
这一时期可以参考这个知乎问题下的回答:Linux中常用的命令都是哪些单词的缩写?
记忆所有命令的拼写应该不难吧?
第二步:使用中文资料(英语不好的话)
既然英语不好,又没有时间练习,那就找一份中文资料来疯狂背诵吧。能够在中国教育体制下上完大学,背诵的技能应该都不会差。
第三步:中英文对照
英文大略看过之后,就将其与自己记忆的中文资料进行比对,逐渐建立原文和翻译之间的联系。如果比较成功的话,你可以做到一个单词都不认识,但是明白这句话在说什么。
这样,你至少可以清楚地了解你拼写出的每一个命令到底怎么用了。
第四步:补充自己的缺陷
从描述来看,你需要补全的至少有两个方面:
1.练习
2.英语
这两个非常重要,你虽然可以在缺少这两项技能的情况下继续从事IT行业,但是你的麻烦会非常多。比如别人一个man的事,你还需要找中文资料这样子。
运维管理命令
netstat -nap 查看系统正在开放的端口
netstat -tnlp | grep 80 查看哪个服务占用了80端口(-t表示只列出tcp协议的连接)
netstat -anptu | grep tcp 查看当前开放的所有tcp端口
rm -r 文件名 删除文件 (-r 递归) (-f 强制)
rm -rf ./* 删除当前目录里的所有文件
mv 文件路径 目标路径 移动文件到指定目录
mv 文件名a 文件名b 将文件名a重命名为文件名b
mv ./* ../ROOT/ 把当前目录下的所有文件移动到上级目录的ROOT文件夹里面
cp 起始路径 目标路径 将一个文件从一个地址复制到另一个地址
cp 文件1 文件2 将文件1复制一份命名为文件2
ssh 远程主机的用户名@远程主机ip 远程登录服务器(如果无法登陆,删除本地.ssh文件里的known_hosts文件里的内容)
scp -r 本地路径 user@ip:服务器路径 将本地文件传到服务器
scp user@ip:服务器路径 本地路径 将服务器文件传到本地
chmod -R 777 文件路径 赋予指定文件所有权限
chmod -R 777 . 以递归的方式修改当前目录下所有文件和子目录的权限
rpm -qa | grep httpd 查询是否安装httpd服务,并列出安装文件
rpm -e 软件名 查询某个软件是否被安装 (只有通过yum安装的才能查询到)
ps -ef | grep java 显示当前进程及参数,并过滤出java程序的进程 { PID表示这个程序的ID,PPID表示这个程序的父程序的ID }
kill PID 立即终止这个进程
crontab -e 编写计划任务(语法格式:分 时 日 月 周 需要执行的命令)
mkdir a 创建一个名称为a的文件夹
touch 文件名.文件格式 创建一个带后缀的文件
du -sh 文件路径 查看指定路径的文件的大小
grep "关键词" 文件名 查找文件中带这个关键词的文件
系统维护命令
service 服务名 start/stop/restart 在deb包管理的系统中开关服务的命令
systemctl start/stop/restart 服务名 在rpm包管理的系统中开关服务的命令
man 命令 解释这个命令
history 数字 显示最近使用的命令
apt-get install 命令符号 安装命令程序
apt-get purge 命令符号 卸载命令程序
which 程序名 搜索某个程序路径
whereis 软件名 搜索某个软件路径
echo $PATH; 查看标准路径目录
dmesg -T 显示系统接入设备日志
sudo nautilus 文件路径 以管理员身份打开文件夹进行删改
df -h 查看磁盘使用情况
fdisk -l 查看分区具体情况
route 检查自己的路由表
traceroute url 检查本机到url的完整路径
git clone github地址 从github下载文件到本地
常用路径的作用
cd /bin 进入根目录下的bin目录
cd bin 进入当前目录下的bin目录
/etc/init.d 系统的启动文件目录,可以使用start启动着里面的文件 如:./bluetooth start 启动蓝牙
/usr/share / 从源安装的软件的文件默认存放地址
windows系
快捷键
Alt + Esc 切换活动窗口
Alt + F4 关闭当前程序
win + D 显示和隐藏桌面
win + I 打开设置
win + M 最小化所有窗口
win + Tab 打开任务视图
Ctrl + win + D 添加虚拟桌面
Ctrl + win + 切换虚拟桌面
Ctrl + win + F4 关闭你正在使用的虚拟桌面
打开服务配置
gpedit.msc 打开组策略
services.msc 打开服务控制
sysdm.cpl 打开系统属性(配置环境变量等操作)
chcp 65001 设置cmd为utf8字符集
c:ProgramDataMicrosoftWindowsStart MenuPrograms windows启动程序路径
在cmd中光标只有在当前行才能 ctrl + v 进行粘贴
windows下的ssh的使用
C:ProgramDatassh sshd_config配置文件所在目录,修改这个文件可以更改ssh连接到win后所在的目录 #ChrootDirectory none 改成 ChrootDirectory C: 然后重启ssh server服务,这样用linux连接到win后就会到 C: 目录下
将linux上的 a.txt文件 复制到windows的 c盘的a文件夹中
scp user@ip:/home/username1/视频/a.txt /c:/a ( -r 递归传送 )
将windows的 c盘的a文件夹中的c.txt文件 复制到linux的中
scp /c:/a/c.txt user@ip:/home/username1/视频/a ( -r 递归传送)
只能在windows系统上操作上面的两条命令,win中的user是用户文件夹里的文件夹名字。
在Mysql安装的目录中找到bin目录,复制此路径到系统属性的‘高级’中的环境变量path里,这样就可以在cmd中运行 mysql -u root -p
Dos命令
很多情况下我们需要记录用户执行过的命令,不管是root还是其他普通用户,我们可以通过以下方式来记录。
PROMPT_COMMAND会在命令执行前执行。
$(who am i |awk '{print \$2,\$5}') 会输出登录用户用的tty和登录服务器的远程电脑IP或者主机名。
$PWD 是内建变量,显示当前执行命令的工作目录。
history 1 | { read x cmd; echo ${cmd}; 会输出最后一条历史命令中的执行信息。
为了不让用户修改变量,使用 declare -rx 命令定义了只读环境变量。这里要注意使用 readonly 命令也可以定义只读变量,但是用户用env命令看不到,只有用 export PROMPT_COMMAND 命令将变量设置为环境变量后才能看到。
变量加到 /etc/bashrc 是因为用户登录后会加载这里的配置,包括 sudo sudo su sudo su - su root su - root 。如果加到其他文件里则部分命令后就不会加载变量,自行尝试。
修改rsyslog是可以自定义日志输出的文件路径和名字,用 logger -p 这个命令配合使用。
新增logrotate配置则是需要切割日志,防止单个日志文件太大,以及做好切割备份,方便查询。
【一】
在 /etc/profile 最后添加如下行,则日志会直接输出到 messages 日志里。
这种方式:不定义日志格式,直接将日志写到messages日志文件里,和其他日志放一起,但是可以指定日志标签,方便检索。
缺点是(1)会导致日志增大,并且用户提权后因-t标签的存在,导致不会记录提权前的用户。(2)不能自定义日志路径。
【二】
缺点:用户可以删除日志文件。
因为普通用户和root都要往日志文件里写,所以需要给普通用户加一个附加组;并且如果日志文件不存在,普通用户登录后也需要新建,所以普通用户必须有日志文件父目录的写权限。为了能让所有普通用户都可以写,就给Command目录加了SGID权限以及修改目录属组为audit。这样普通用户在这个目录下创建的日志文件的属组会自动继承Command目录的属组,也就是audit。 (umask 002 touch $HISTORY_FILE) 命令则是因为root用户生成的日志文件权限是644,属组没有写权限。所以这里用 启动子shell并修改umask的方式生成日志文件。这样就不会修改root默认的 0022 的umask。
其他审计软件:
免费2个月
一、创建linux维护用户
登录root用户
创建新用户
useradd 新用户名
设置用户密码
passwd 新用户密码
二、安装jdk和配置环境变量
建议在root用户下直接安装jdk,并直接配置环境变量,同时给非root用户设置读和执行权限
解压包
tar xvf jdk包名.tar
配置全局变量
编辑/etc/profile文件
vi /etc/profile
按I键,切换成编辑模式。
在文件未加入一下配置
export JAVA_HOME=jdk的解压文件目录
export JRE_HOME=jdk的解压文件目录/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${ JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${ JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
保存并退出
Esc
:wq
重载配置文件使其生效
source /etc/profile
检查是否安装成功
Javac
Java version
权限修改
读4写2执行1,顺序所有者、组成员、其他用户
Chomd 755 jdk的解压文件目录
三、安装tomcat
安装tomcat和放入war包使用非root的维护用户
如果使用root安装的话记得设置权限。( chomd -r 外层文件目录 )
su - 用户名
1、解压包
tar xvf tomcat包名.tar
2、将war包放入tomcat/webapps目录下
3、Tomcat启动服务和停止服务
查看进程
ps -ef | grep java
启动应用
Tomcat bin目录下.startup.sh
停止应用
建议使用
Kill -9 进程号
注:解压出应用文件后,注意配置信息的修改
四、IBM MQ部署 (7.5之后的版本)
(以下是使用9.0版本的正确部署命令)
一、 卸载旧版本IBM MQ (可选)
因为部署环境没有安装过mq,卸载这部分命令我没有亲自测试过
设置环境
以用户身份登录到组mqm,找到mq的安装位置 /opt/mqm
source ./setmqenv -s
查看队列管理器的状态
dspmq -o installation
停止与要卸载的安装关联的所有正在运行的队列管理器
endmqm SXRECV
停止与队列管理器关联的所有侦听器。
endmqlsr -m SXRECV
查看系统上当前安装的软件包(组件)
sudo rpm -qa | grep MQSeries
列出软件包并一次性卸载
sudo rpm -qa | grep MQSeries | xargs rpm -ev
再将对应的用户及安装目录给删除
rm -rf /opt/mqm
userdel -r mqm
检查MQ license
license文件在安装目录中 /opt/mqm/lib 可以找到
amqtcert.lic - is a trial license
amqbcert.lic - is a beta license
amqpcert.lic - is the production license
——————————————————————————————————————
二、安装新版本ibm mq
解压,解压文件都在MQServer中
tar –xzvf IBM_MQ_9.1.5_LINUX_X86-64.tar.gz
进入MQServer文件夹中:
cd MQServer/
运行MQ许可证程序
./mqlicense.sh
安装WebSphere MQ for Linux服务器(Runtime、SDK 和 Server 软件包):
rpm -U MQSeriesRuntime-9.1.5-0.x86_64.rpm
rpm -U MQSeriesSDK-9.1.5-0.x86_64.rpm
rpm -U MQSeriesServer-9.1.5-0.x86_64.rpm
安装WebSphere MQ for Linux客户机:
rpm -U MQSeriesClient-9.0.0-0.x86_64.rpm
安装WebSphere MQ样本程序:
rpm -U MQSeriesSamples-9.0.0-0.x86_64.rpm
创建组和用户
安装过程创建了一个名为mqm的用户和一个同样名为 mqm 的组。设置一个密码来解锁。
passwd mqm
——————————————————————————————————————
三、 配置
(这部分队列管理器、通道、队列等根据实际情况自行配置)
切换用户:
su mqm
创建队列管理器
使用crtmqm命令来创建一个名为 SXRECV
的队列管理器。我们把它作为缺省队列,并且将不在创建时指定死信队列。然后使用strmqm命令启动队列管理器。
crtmqm -q SXRECV
strmqm SXRECV
——————
如果执行crtmqm命令时提示
-bash-3.2$ crtmqm
-bash: crtmqm: command not found
find / -name crtmqm
则需要配置mqm用户的环境变量,编辑如下文件,并添加下面的内容,如下:
第一种方法:相对第二种较安全仅对mqm用户有效
方法一:
(1) -bash-3.2$ vi /var/mqm/.bash_profile --有可能会在文件夹下看不到这个文件,通过编辑即可看到
PATH=$PATH:/opt/mqm/samp/bin:/opt/mqm/bin:bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin
(2)执行“.”命令,使这个文件生效
-bash-3.2$ source .bash_profile
(3)再次尝试实行crtmqm或是dspmqm命令,即可发现已经生效。
方法二:
( 1)
su root
[if !supportLists](2)[endif]
vim /etc/profile
[if !supportLists](3)[endif] 在最后面加上:
PATH=$PATH:/opt/mqm/samp/bin:/opt/mqm/bin:bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/bin
( 4)关闭远程终端重新打开,无需重启服务器
——————
运行队列管理器
runmqsc SXRECV
创建通道和队列
DEFINE QLOCAL (XYDATA) REPLACE USAGE (NORMAL) DEFPSIST (YES) MAXDEPTH (300000) DESCR('兴业银行')
DEFINE QLOCAL (XYTRANS) REPLACE USAGE (XMITQ) DEFPSIST (YES) MAXDEPTH (300000) DESCR('兴业银行')
DEFINE QREMOTE (XYACK) REPLACE DEFPSIST (YES) RQMNAME (SXSEND) RNAME (XYACK) XMITQ (XYTRANS) DESCR('XXXX')
DEFINE CHANNEL (XYDATA) CHLTYPE (RCVR) TRPTYPE (TCP) REPLACE DESCR('XXXX')
DEFINE CHANNEL (XYACK) CHLTYPE (SDR) CONNAME ('166.1.1.8(2214)') XMITQ (XYTRANS) TRPTYPE (TCP) DISCINT (0) CONVERT (NO) SHORTRTY (30) SHORTTMR (10) LONGRTY (999999999) LONGTMR (20) REPLACE DESCR('XXXX')
DEFINE CHANNEL (SVRCONN) CHLTYPE (SVRCONN) MCAUSER('mqm')
创建监听
DEFINE LISTENER (RECLISTENER) TRPTYPE (TCP) CONTROL(QMGR) PORT (2214)
启动监听
start LISTENER(RECLISTENER)
启动通道
start channel(SVRCONN)
start channel(XYDATA)
start channel(XYACK)
———————————————————————————————————————————————————
四、2035错误码 说明
如果程序连接mq报错2035,则需要对权限认证做设置,则进行以此操作
1、
ALTER QMGR CHLAUTH(DISABLED)
2、
ALTER CHL(通道名) CHLTYPE(SVRCONN) MCAUSER('mqm')
3、
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
或者直接将连接认证选项置为空,将其完全关闭,指令如下:
ALTER QMGR CONNAUTH('')
在执行完上述两条命令中的任一条后,都需要刷新连接认证的缓存,指令如下:
REFRESH SECURITY TYPE(CONNAUTH)
五、mq操作命令
一、MQ的启动与停止
1、MQ的启动
strmqm QMgrName
如果启动默认队列管理器,strmqm后可以忽略队列管理器名称。
2、MQ的关闭
endmqm -i QMgrName
停止mq
二、MQ运行状态查看与常用操作
1、 查看队列管理器运行状态
su mqm
执行如下命令检查队列管理器运行状态:dspmq显示结果中QMNAME表示MQ队列管理器的名称,STATUS表示当前运行状态。运行状态有如下几种:Starting正在启动Running正在运行Ending正在停止Ended normally已经正常终止Ended immediately已经立即终止Ended preemtively已经强制终止Ended unexpectively异常终止
注意:停止MQ后必须使用dspmq命令进行状态检查
2、查看通道运行状态与启停通道
runmqsc
dis chl(*);查看所有通道定义
dis chs(*);查看所有通道状态,如果没有查询到通道状态,或报错AMQ8420: Channel Status not found,请启动通道
dis chs(ChannelName); 查看通道ChannelName的状态
通道状态有如下几种:
STARTING正在启动BINDING正在绑定INITIALIZING正在初始化RUNNING正常STOPPING 正在停止RETRYING重试PAUSED等待STOPPED已停止REQUESTING请求
start chl(ChannelName);启动通道
stop chl(ChannelName);停止通道
* 重置通道
reset channel(ChannelName); 重置通道序号。当本地与其他MQ队列管理器的通道无法正常启动的情况,检查日志发现是通道序号不一致,此时就需要先停止发送方通道,清空队列深度并在发送方和接收方进行通道计数的重置,重置后启动通道即可恢复通讯。
注意:重置成功mq序列号一般相同或相差1
3、查看通道监听状态与启停监听
runmqsc
dis listner(*);查看通道监听定义
dis lsstatu(listnerName);查看监听状态
start lstr(listnerName); 启动监听
stop lstr(listnerName); 停止监听
4、查看队列深度
runmqsc
dis q(*);查看所有各类队列的属性
dis qlocal(QName);查看所有本地队列的属性
队列深度属性为:CURDEPTH
查看队列深度display ql('队列名') curdepth
*清空队列深度
清空队列深度
clear ql(‘队列名’)
三、MQ发送和接收消息
su mqm
发送消息
amqsput 队列名 队列管理器
获取消息
amqsget 队列名 队列管理器
可通过配合查看队列深度命令,完成mq的联调
六、其他维护中常用linux命令
1、测试端口连接
telnet ip port
2、查看已启动的端口
netstat -an | grep 端口号
3、查看应用进程
ps -ef |grep java
4、修改权限
chomd XXX(对应的权限) 文件目录
5、修改文件或目录下所有文件所有者和组
Chomd -R 用户名:组名 文件目录
6、查看目录内容
ls 或者ls -l (简写ll)
7、查看文件输出
cat 目录/文件名
或者
Vi 目录/文件名 按i可进入编辑
按 G 到文档末尾
按 gg 到文件首行
不保存退出
Esc :q!
保存退出
Esc :wq
vi 进入文档文档后查找关键字
Esc 进入命令行
/关键字
按n向下继续查找
按N向上继续查找
8、杀进程
Kill -9 进程号
9、复制
cp -r 源目录 目标目录
10、移动
mv -i 源文件或目录 目标文件或目录
11、删除
rm -R 文件目录
12、 切换工作目录
cd 相对路径或绝对路径
~也表示为 home 目录 的意思, . 则是表示目前所在的目录, .. 则表示目前目录位置的上一层目录。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流