Skip to content

Instantly share code, notes, and snippets.

@jingmian
Last active December 16, 2021 02:27
Show Gist options
  • Select an option

  • Save jingmian/8aff06319cbdcf5820580e57c2d5e3e4 to your computer and use it in GitHub Desktop.

Select an option

Save jingmian/8aff06319cbdcf5820580e57c2d5e3e4 to your computer and use it in GitHub Desktop.
Linux操作命令
//man手册
man 1 sleep #man是按照手册的章节1号的sleep命名,2系统编程,3.C语言编程
//jobs
查看后台运行程序
//ctrl+z可以将在运行的程序调入后台运行
//fg将后台程序调出前台
fg 编号 #编号 通过jobs查看
//whoami 查看当前用户
whoami
who
w #有登陆时间,更详细
//查询系统已有的组
cat /etc/group
jingmian:x:90: #jingmian是组名,系统创建用户的时候,默认会增加一个组名跟用户名一样。x:是组的id
//查询用户信息
cat /etc/passwd
www:x:501:501::/home/www:/sbin/nologin # www是用户,不是用户组,第一个501是用户Id,第二个501是组id
//ls 查看文件所有信息,-a 代表查询所有文件,包括隐藏文件,-l包括详情信息,比如时间,读写权限信息
ls -al /boot
ls [a-z]* #查询以字符串a到z字母开头的任意文件,可以用正则
//查询用户最后登录时间
last
//linux重定向,把查询结果赋予一个文件
ls > test.log
ls >> test.log #如果当前文件已经存在,追加内容在当前文件,不覆盖
//grep,-i忽悠大小写,-v取反
grep 'lnmp' test.log -ni #查询test.log含有lnmp关键字,并返回行号
grep ^a test.log -ni #查询test.log含有a开头的关键字,并返回行号
//查询文件类型
file test.log
//which查看命令位置,例如查看php命令在哪个位置
which php
//日历
cal
//命令补全
输入某个关键词几个词,按table可以补全
//查看当前工作路径
pwd
//切换工作路径
cd
//回到自己的家,类似回到home自已的目录,root用户是返回/root
cd ~
//可以读取上一条命令的退出码
echo $?
//查看PID为1的进程信息。
ls /proc/1/
//查看进程为1的运行状态
cat /proc/1/status
//清空文件
cat /dev/null > test.txt
//scp下载服务器文件到本地,-P指定端口
scp root@25.25.25.25:/usr/local/ngrok/bin/ngrok /Users/morong/Documents/
如 scp -P xxx user@ip:/path path #xxx是端口
scp root@8.11.22.1:/www/wwwroot/www.dse.com/runtime/log/sh.log ~/.
rsync -avzP -e 'ssh -p 22' root@8.22.11.212:/www/wwwroot/yum/runtime/log/sh.log ~/.
//想使用CP拷贝一个大目录(/home/study/test),但又不想拷贝其中的一个子目录(/home/study/test/test1),应该如何写命令行
cd /home/study/test
rsync -av --exclude test1/ --exlclude test2/ ../test/ /home/copydir
//本地文件上传到服务器
scp get66.txt root@192.168.1.147:/super
//登出
logout
//关机 -h:关机 -r:重启 -k:警告 -c:取消关机
shutdown -h 0 //立即关机,0秒后关机
halt //马上关机
//vi操作模式
1)命令模式
打开文件,默认处于命令模式,命令模式无法编辑文件
2)输入模式
在命令模式下按:i进入输入模式,便于编辑文件内容
3)末行模式
按esc进入到命令模式,再按:进入末行模式保存
//打开文件定位到最后一行
vi + user.txt
//打开文件定位到第二行
vi +2 user.txt
//光标定位到第二行
vi +2 user.txt
//查找文件关键词,如果查询有,可以按n继续查找下一个
vi +/hello user.txt
//编辑多个文件
vi 1.txt 2.txt 3.txt
//编辑第一个1.txt完成后,按:w后,再按:n下一个文件,最后一个文件才:wq保存。返回上一个文件,按:prev
//vi快捷键
i 在光标前输入
a 在光标后输入
: 进入末行模式
esc 编辑模式进入到命令模式
:w 保存
:w! 强制保存
:q 退出
:x 保存到并退出
:q! 退出不保存
:set nu 显示行号
:set nonu 取消行号
yy 复制一行
dd 删除一行
p 粘贴
:数字 光标直接定位到指定行
/关键词 查找关键词
三、操作系统目录
/bin :系统命令目录
/dev :设备目录
/home :用户的家
每个系统用户在/home都有一个自己的家
如:zhangsan /home/zhangsan
每个用户登录到系统后会自动登录到自己的家
root的家在/root文件夹中
/lib :系统库目录
/media :多媒体目录
/mnt :挂载目录
/proc :系统内存目录
/sbin :超级用户系统命令目录
/tmp :系统临时文件目录
/var :经常变化的文件的目录 数据库 日志 网页文件
/boot :系统启动文件所在目录
/etc :配置文件目录
/lost+found :失物认领处
/opt :第三方应用程序所在目录
/root :超级用户root的家
/usr :系统应用程序所在目录
//查询所有已安装软件
rpm -qa
-q 查询
-a 全部已经包装软件包
-e 卸载
-i 安装
-v 显示进度
-h 进度用"#"显示
//安装软件
rpm -ivh vim-enhacned-6.3.046.rpm
rpm -e vim-enhanced //删除vi软件包
rpm -e mysql //普通删除模式
rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
//查询所有已安装含有vi关键字的软件名称,不需要具体的后缀名,不然报错
rpm -qa |grep vi
rpm -qa | grep mysql
//弹出光驱
eject
//选择光盘
//挂载光驱
mount /media/cdrecorder/
//挂载windows共享网络盘
sudo apt-get install smbclient
sudo apt-get install smbfs
mkdir ~/share
sudo mount -t cifs -o username=技术部,password=zy123456 //192.168.2.5/客户资 料 ~/share/
//编辑器里面的文字颜色代表
红色:压缩包
浅绿色:快捷方式,类似windows桌面qq快捷图标
蓝色:文件夹
读 r 4
写 w 2
运行 x 1
如果是5代表可以读也可以运行
7代表可以读可以写,可以运行
777代表
拥有者权限7
所属组权限7
组外用户权限7
//第1列:文件权限
- --- --- ---
类型
-: 普通文件 拥有者权限 所属组权限 组外用户权限
d: 普通目录
l: 链接文件
第2列:文件节点数
第3列:文件拥有者
第4列:文件所属组
第5列:文件大小
第6列:文件最后修改时间
第7列:文件名
//目录管理
mkdir 目录名 创建目录 默认创建的权限是755
-p :递归创建
-m :创建目录指定权限
//chmod单独添加权限
u 代表用户. [u]ser,
g 代表用户组. [g]roup,
o 代表其他. [o]thers.
a 代表所有
chmod u+x somefile
//将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :
chown jessie:users file1.txt
//将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport :
chmod -R lamport:users *
//usermod [options] user_name
usermod 命令修改系统帐户文件来反映通过命令行指定的变化
-a|--append ##把用户追加到某些组中,仅与-G选项一起使用
-c|--comment ##修改/etc/passwd文件第五段comment
-d|--home ##修改用户的家目录通常和-m选项一起使用
-e|--expiredate ##指定用户帐号禁用的日期,格式YY-MM-DD
-f|--inactive ##用户密码过期多少天后采用就禁用该帐号,0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-1
-g|--gid ##修改用户的gid,改组一定存在
-G|--groups ##把用户追加到某些组中,仅与-a选项一起使用
-l|--login ##修改用户的登录名称
-L|--lock ##锁定用户的密码
-m|--move-home ##修改用户的家目录通常和-d选项一起使用
-s|--shell ##修改用户的shell
-u|--uid ##修改用户的uid,该uid必须唯一
-U|--unlock ##解锁用户的密码
usermod - a - G www hexu # 将hexu用户添加到www用户组
//新建用户test,密码test,另外添加usertest组
useradd test
echo "test" | passwd --stdin test
groupadd usertest
//给test 用户添加密码
sudo passwd test
//删除用户,同时删除主目录,即/home/test
userdel -r test
//把test用户追加入usertest组
sermod -aG usertest test ##多个组之间用空格隔开
id test
uid=500(test) gid=500(test) groups=500(test),501(usertest)
//修改test用户的家目录
usermod -md /home/usertest
ls /home
usertest
//创建744权限目录
mkdir -m 744 download
touch 1.txt //创建文件,如果已经创建,则把文件时间修改为当前系统时间
rmkdir 目录名 只能删除空文件夹
-p :递归删除
//删除文件
rm -rf 文件夹名称
-f 无需确认
-r 递归删除
set nu //查看文件的行数
//移动文件
mv /home/backup/n-2017081.tar.gz.amh /home/wwwroot/163.58.169.33/web
//复制文件
cp [选项]<源文件路径><目标文件路径>
-R:递归复制
-p:复制过程中保持文件原有属性
-v:显示复制过程
cp user.txt /tmp/. ----后面的.代表用源文件名称,也可以直接写新的名称,一般-Rpv都写上
//剪切
mv [选项]<源文件路径><目标文件路径>
-v:显示复制过程
同时mv实现重命名功能
mv ./123/user.txt ./123/u.txt
//在ubuntin 左右键出现ABCD解决办法
apt-get install vim
//文件统计
wc[选项]<文件列表>
-c: 统计字符数
-l: 统计行数
-w: 统计单词数 空格是单词分界点
//搜索匹配行
grep[选项]<"字符串"><源文件>
-n : 显示行号
-c :共匹配多少行
-i :忽略大小写
//查看文件
cat user.txt
tac user.txt ----倒叙显示文件内容
//查看占用CPU占用100%,具体哪个应用哪行代码
执行top -c ,显示进程运行信息列表
键入P (大写p),进程按照CPU使用率排序
找到最耗CPU的线程
printf “%x” 10804
jstack 10765 | grep ‘0x2a34’ -C5 --color
最基本的是cat、more和less。
1. 如果你只想看文件的前5行,可以使用head命令,如:
head -5 /etc/passwd
2. 如果你想查看文件的后10行,可以使用tail命令,如:
tail -10 /etc/passwd 或 tail -n 10 /etc/passwd
tail -f /var/log/messages
参数-f使tail不停地去读最新的内容,这样有实时监视的效果 用Ctrl+c来终止!
3. 查看文件中间一段,你可以使用sed命令,如:
sed -n '5,10p' /etc/passwd
这样你就可以只查看文件的第5行到第10行。
//nohup在后台常驻运行php脚本
nohup php a.php &
//更改文件权限
chmod 更改文件权限
-R : 递归改变
chown 更改拥有者
-R : 递归改变
chgrp 更改文件所属组
-R 递归改变
chmod -R 777 down 该文件夹下面全部文件权限改为777
链接文件
用途:
1)保护源程序
2)访问方便
ln [选项] <源文件或目录> <目标文件或目录>
-s :软链接
-d :硬链接
实例:ln -s /root/test.txt /tmp/test.txt ----必须指定目录,从根目录开始写
ln -s /usr/local/php5.6.4/bin/php /usr/bin/php
软链接特点:
更改一个文件会影响另外一个文件
可以软链接目录
删除源文件会影响链接文件的使用
硬链接特别:
给文件拷贝一份,这两个文件独立占用内存
硬链接文件在外观上普通文件一样
不可以链接目录
更改一个文件会影响另外一个文件
删除源文件不会影响硬链接文件
//查找文件
find [目录列表] [匹配参数] [匹配标准]
-name :以文件名查询
-group :以文件所属组查询
-user :以用户名查询
实例 : find /root -name 1.txt ------在root文件夹搜索名字为1.txt文件
find /root -user root 1.txt------在root文件夹搜索用户名为root的1.txt文件
//其它相关命令
df 查看硬盘空间
(块) (已经使用大小) (剩余空间) (挂载点)
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1(系统盘) 51090708 3462908 45015732 8% /
-l:查看本地硬盘
-h:以1024进制显示
-H:以1000进制显示
-T:显示分区类型 实例 df -lHT, df -lHT -t ext4(只查看ext4分区)
-t:只显示指定的分区类型
-x:不显示指定的分区类型 df -lHT -x ext4(除了ext4分区)
du 查看文件大小
-b:以字节为单位
-k:以千字节为单位
-m:以兆为单位
-h:以1024进制显示
-H:以1000进制显示
-s:显示总计
mount :挂载设备
umount :卸载设备
eject :弹出光盘
十、配置网络
1、配置网络信息
/etc/sysconfig/network-scripts/ifcfg-eth0
在这个文件中,保存了第一块网卡的配置信息
DEVICE :设备名称
ONBOOT :当系统启动后是否自动启动网卡设备
BOOTPROTO:获取IP方式 static:静态获取
IPADDR :ip地址
NETMASK :子网掩码
GATEWAY :网关
2、启动网络设备
1)service ---是系统命令,network---网络服务
service network start|restart|stop
ifup:启用网卡
ifdown:关闭网卡
ifconfig :查看当前网络设备
//安装FTP服务 ubunt
sudo apt-get install vsftpd
(2)、新建一个文件夹用于FTP的工作目录
mkdir /home/ftp
(3)、新建FTP用户并设置密码以及工作目录
ftpname为你为该ftp创建的用户名
sudo useradd -d /home/ftp -s /bin/bash ftpname
(4)、修改vsftpd配置文件
用命令打开vsftpd.conf
vi vsftpd.conf
设置属性值
anonymous_enable=NO #禁止匿名访问
local_enable=YES
write_enable =YES
然后重启
//搭建LAMP环境
1、关于安装方式
1).rpm 二进制软件包
2).tar.gz 源代码软件包
2、编译安装的步骤
1)configure 配置 --prefix=/指定安装路径
2)make 生成
3)make install 安装
3、卸载之前的软件
因为在linux中,默认安装了apache、mysql、php软件,它们都是以rpm包格式安装,所以我们需要先将这些软件删除才可以继续安装我们现在的源代码包。
rpm -e httpd --nodeps //强制删除,httpd是代表apache
查看系统是否已安装GCC
gcc -v //编译的时候必须要用的
实例:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
sudo apt-get install g++-4.9
装了ppa,各种版本就可以共存了。不过有一个问题,每次要用的时候,必须使用g++-4.9,如果直接用g++会运行4.8版本的,非常麻烦。
所以需要改一下/usr/bin/下的链接。
sudo su
cd ../../usr/bin
ln -s /usr/bin/g++-4.9 /usr/bin/g++ -f
ln -s /usr/bin/gcc-4.9 /usr/bin/gcc -f
---------------------------------------------------------------
//解压编译包,参数-C指定路径
tar -zxf httpd-2.2.11.tar.gz
tar -zxf httpd-2.2.11.tar.gz -C /home/. #-C指定路径
//打包Mysql文件夹为abc.tar
tar cvf abc.tar mysql
.tar.gz #-z:有gzip属性,即需要用 gzip 压缩
解压:tar zxvf FileName.tar.gz #如果不是归档tar压缩的,解压不需要-z参数
压缩:tar zcvf FileName.tar.gz DirName
---------------------------------------------
.bz
解压:tar jxvf FileName.tar.bz
压缩:tar jcvf FileName.tar.gz DirName
//gzip压缩,tar只是打包并不压缩,这两个是一起配合用的
gzip abc.tar #会生成abc.tar.gz文件
gzip -d abc.tar.gz #恢复成tar文件
.configure --preifx=/usr/local/apache --enable-so
//添加mysql用户名和用户组
groupdel mysql //删除mysql组
groupadd mysql //添加一个组叫mysql
useradd -r -g mysql mysql //创建一个mysql添加到mysql组,前面是组名,后面是用户名
//进入mysql文件夹,修改当前文件所属mysql用户
chown mysql . -R
chown 新主人 某文件 ,
//初始化mysql
在mysql文件夹里面执行
scripts/mysql_install_db --user=mysql //以mysql用户执行
//apache伪静态
#配置403 404页面
ErrorDocument 404 /404.php #根目录下的404.php
#配置欢迎页面
DirectoryIndex myindex.html
#重写规则
<IfModule rewrite_module>
RewriteEngine On
RewriteRule news-(music|sport)-id([1-9]\d*)\.html$ news.php?id=$2type=$1
</IfModule>
//防盗链
<IfModule rewrite_module>
RewriteEngine On
#RewriteCond 指令是指定一个重写的条件
RewriteCond %{HTTP_REFERER} !www.shop.com
#-[F] 直接禁止服务
RewriteRule .*\.(jpg|png|gif) -[F]
#RewriteRule .*\.(jpg|png|gif) abc.png #abc.png是一个图片
</IfModule>
关于多个RewriteCond使用,
使用方法1
#RewriteCond 条件1
#RewriteCond 条件2
#RewriteRule 重写 同时满足条件1和条件2才重写
使用方法2
#RewriteCond 条件1
#RewriteRule 重写 满足条件1就执行
#RewriteCond 条件2
#RewriteRule 重写 满足条件2就执行
//伪静态简化url请求,仅在Thinkphp 3.1版本下,不分前后模块
([a-z_]+)/([a-z_]+) index.php?c=$1&a=$2
// 开放端口11211
第一种 通过setup配置
第二种、iptables -a input -p tcp -s 127.0.0.1 ip -dport 11211 -j ACCEPT
//开放端口9527
firewall-cmd --zone=public --add-port=9527/tcp --permanent
## 防火墙重启生效
systemctl stop firewalld.service
systemctl start firewalld.service
//启动memcache
-d【daemon后台程序】
-m 占用最大的内存
-l 监听哪个端口
-u 哪个用户启动
memcached -p 端口号 -d -m 40 -l 127.0.0.1 -u root -P/tmp/memcached.pid
//查看是否成功启动memcached,端口11211
netstat -an |more
//先安装memcached -d install
//启动 memcached -d start
//链接telnet
telnet 127.0.0.1 11211
//设置变量 name是键,0数据不要压缩。60存放时间为60s。5数据大小5个字节
add name 0 60 5
hello
//获取值
get name
//修改数据,更新一个键为name数据,前提是该键存在,如果不存在则提示not_stored
replace name 0 30 3
还有一个种替换,如果存在则替换,不存在则添加
set name 0 30 3
//删除数据
delete 键 [指定删除某个键]
flush_all [清空所有的数据]
//在键值最后面追加键值,比如name原来的值为hello,追加后为helloabc
append name 0 100 3
abc
//在键值前面追加值,比如name原来的值为hello,追加后为gohello
prepend name 0 100 3
go
//数值+1,num是已经定义的键
incr num 1
//数值-1
decr num 1
//查看memcached工作状态时间
stats
//查看apache哪一个种方式处理并发
apache/bin/httpd.exe -l
//apache并发数设置,但首先要在httpd.conf,开启多路处理模型
MaxClients 1000 并发数是同时点击一个连接,不是同时在线人数 ------这里是extra目录下面的httpd-mpm.conf辅助配置文件。
//ubuntn下安装软件时,提示缺少依赖包
sudo apt-get -f install
//redis 批量删除key
redis-cli keys "LOCK_PREFIX_paynotify:*" | xargs redis-cli del
//redis 不重启切换到AOF
127.0.0.1:6379> CONFIG SET appendonly yes # 动态配置
OK
127.0.0.1:6379> save # 收到触发rdb存储数据
OK
127.0.0.1:6379> CONFIG SET save "" #关闭RDB功能
OK
127.0.0.1:6379> save
OK
//127.0.0.1:6379> shutdown save # 安全退出并存储数据
vim redis.conf ##修改配置文件重启生效
appendonly yes #aof方式默认关闭
//redis 开启内存淘汰机制,当前已用内存超过maxmemory限定时,触发主动清理策略,策略包含以下几种
maxmemory-policy allkeys-lru
//redis 文档
http://redisdoc.com/topic/pubsub.html
ibase是输入数字的进制,而obase就是输出数字的进制了。很好记,i是input,o是output。
如果用一条命令来转数字,可以用echo命令和管道结合bc。如下:
#10进制转2进制:
echo "obase=2;ibase=10;100" | bc
1100100
#10进制转16进制:
echo "obase=16;ibase=10;100" | bc
64
#16进制转10进制:
echo "ibase=16;obase=2;F1" | bc
11110001
#base-32转十进制:
#((num=32#ffff)); echo $num;
507375
#base64转十进制:
((num=64#abc_)); echo $num;
2667327
#二进制转十进制
((num=2#11111111)); echo $num;
255
@jingmian

Copy link
Copy Markdown
Author

伪静态参数讲解 QSA,Lhttps://prnt.sc/h1fi70

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment