站内公告:

我们的虚拟社区正式开通了

Main Menu

最新帖子

#61
Redis数据库 / 查看redis cluster集群信息
上次发布者 jvip_chen - 2022-5月-09 01:49 下午
注:ip为安装redis的那台服务器(集群中的其中一台)的ip,password为redis的密码

1. 集群相关信息查看
1.集群状态
redis-cli -h ip -p 6401 -a password cluster info<br>
2.集群节点信息
redis-cli -h ip -p 6401 -a password cluster nodes<br>
3.节点内存、cpu、key数量等信息(每个节点都需查看)
redis-cli -h ip -p 6401 -a password info<br>
4.从redis集群中查看key(只需要连接master节点查看)
a.查看该节点的所有key
redis-cli -h ip -p 6401 -a password keys *<br>
b.查看key的value值
redis-cli -h ip -p 6401 -a password -c get key<br>
c.查看key值得有效期
redis-cli -h ip -p 6401 -a password -c ttl key
  

2.查看 redis 中存的数据
ssh root@ip
Password: password
keys *
查看存储的数据剩余过期时间
ttl key<br>
查看key的类型(string,set,list,hash)
type key<br>
查看key的值(string类型)
get key<br>
查看key的值(set类型)
scard key //获取 set 集合中元素的数量
smembers key //查看 set 中的内容<br>
查看key的值(hash类型)
hlen key //获取 key 键的字段数量
hgetall key //返回 key 键的所有字段及其值
hkeys key //获取 key 键中所有字段的名字
hvals key //获取 key 键中所有字段的值
#62
Shell脚本 / Linux nohup 命令
上次发布者 jvip_chen - 2022-5月-09 01:46 下午
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

使用权限
所有使用者

语法格式
nohup Command [ Arg ... ] [ & ]
参数说明:
Command:要执行的命令。

Arg:一些参数,可以指定输出文件。

&:让命令在后台执行,终端退出后命令仍旧执行。

实例
以下命令在后台执行 root 目录下的 runoob.sh 脚本:

nohup /root/runoob.sh &
在终端如果看到以下输出说明运行成功:

appending output to nohup.out
这时我们打开 root 目录 可以看到生成了 nohup.out 文件。

如果要停止运行,你需要使用以下命令查找到 nohup 运行脚本到 PID,然后使用 kill 命令来删除:

ps -aux | grep "runoob.sh"
参数说明:

a : 显示所有程序
u : 以用户为主的格式来显示
x : 显示所有程序,不区分终端机
另外也可以使用 ps -def | grep "runoob.sh" 命令来查找。

找到 PID 后,就可以使用 kill PID 来删除。

kill -9  进程号PID
以下命令在后台执行 root 目录下的 runoob.sh 脚本,并重定向输入到 runoob.log 文件:

nohup /root/runoob.sh > runoob.log 2>&1 &
2>&1 解释:

将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。

0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)
#63
服务器运维 / supervisor使用
上次发布者 jvip_chen - 2022-5月-06 02:43 下午
安装
# 安装 epel 源,如果此前安装过,此步骤跳过
yum install -y epel-release
yum install -y supervisor
systemctl enable supervisord # 开机自启动
systemctl start supervisord # 启动supervisord服务
# systemctl status supervisord # 查看supervisord服务状态
supervisord
运行supervisor时会启动一个进程supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启

systemctl restart supervisord
supervisorctl (命令管理工具)
可以用来执行start、stop、restart等命令,来对这些子进程进行管理

# 启动 hyperf 应用
supervisorctl start hyperf
# 重启 hyperf 应用
supervisorctl restart hyperf
# 停止 hyperf 应用
supervisorctl stop hyperf
# 查看所有被管理项目运行状态
supervisorctl status
# 重新加载配置文件
supervisorctl update
# 重新启动所有程序
supervisorctl reload
网页管理
supervisor提供了基于web的控制,管理员可以通过在页面上点点按钮即可完成对进程的启动、重启以及查看状态等操作,甚是方便

vim /etc/supervisor.conf

[inet_http_server]
port=127.0.0.1:9001
;username=test
;password=123456
systemctl start supervisord
# sudo /usr/bin/supervisord -n -c /etc/supervisord.conf
打开浏览器,输入地址127.0.0.1:9001
#64
服务器运维 / supervisorctl常用指令
上次发布者 jvip_chen - 2022-5月-06 02:41 下午
查看帮助
help
help <action>

关闭supervisord
shutdown
重载配置文件并重启supervisord和program
reload
读取当前运行配置和program配置文件的差异
reread
重载配置文件并重启受影响的program
update
重启program(不会重载配置文件)
restart <name>
restart <name> <name>
restart all

清空program日志
clear <name>
clear <name> <name>
clear all

前台显示program(Ctrl+C退出)
fg <name>
显示supervisord或program ID
pid
pid <name>
pid all

启动program
start <name>
start <name> <name>
start all
停止program
stop <name>
stop <name> <name>
stop all

查看program状态
status <name>
status <name> <name>
status

输出program最新日志(默认stdout,Ctrl+C退出)
tail [-f] <name> [stdout|stderr] (default stdout)
输出supervisord最新日志(Ctrl+C退出)
maintail [-f]
#65
PHP 开发 / 报错file_get_contents(): SSL ope...
上次发布者 jvip_chen - 2022-5月-03 07:39 下午
报错内容
file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:\nerror:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

这和本地环境有关,是否开启了ssl验证。
解决方式:修改配置,或者修改代码

$stream_opts = [
    "ssl" => [
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ]
]; 
 
$response = file_get_contents($url, false, stream_context_create($stream_opts));
#66
Linux 系统 / linux增加swap分区和删除swapfile文件的方法
上次发布者 jvip_chen - 2022-4月-29 09:42 上午
创建swapfile文件
执行命令:dd if=/dev/zero of=swapfile bs=1024 count=5000000
注:可根据实际需要更改count值的大小,这里设置5000000,大概就是4G多

dd if=/dev/zero of=swapfile bs=1024 count=500000
500000+0 records in
500000+0 records out
512000000 bytes (512 MB) copied, 0.847481 s, 604 MB/s
 ll
total 500000
-rw-r--r-- 1 root root 512000000 Sep 11 16:24 swapfile

将swapfile设置为swap空间

执行命令:mkswap swapfile

[root@dics-no iflytek]# mkswap swapfile
Setting up swapspace version 1, size = 499996 KiB
no label, UUID=bf7c48ab-d829-4291-a477-f75cdd33f72a
[root@dics-no iflytek]#

启用交换空间

执行命令:swapon swapfile

[root@dics-no iflytek]# swapon swapfile
swapon: swapfile: insecure permissions 0644, 0600 suggested.
[root@dics-no iflytek]#

查看是否增加swap分区

执行命令:free -h

[root@dics-no iflytek]# free -h
total used free shared buffers cached
Mem: 31G 918M 30G 8.3M 704K 589M
-/+ buffers/cache: 328M 30G
Swap: 488M 0B 488M
[root@dics-no iflytek]#
删除swapfile

如果创建了swapfile之后,想要删除,必须先执行以下命令
swapoff swapfile
[root@i-5608690E /]# swapoff swapfile
然后再执行删除文件操作
rm swapfile
[root@i-5608690E /]# rm swapfile
注:如果没有执行swapoff操作,就执行执行删除文件的操作,系统会报错,不给删除。swapoff相当于是卸载swap分区。
#67
Linux 系统 / Linux统计文件个数
上次发布者 jvip_chen - 2022-4月-27 05:58 下午
1.显示目录中的文件:
ls -l | grep "^-"
我们可以用wc命令进行统计:

wc [-lwm]

参数:

-l 仅列出行数;

-w 仅列出多少字(英文单字);

-R 递归列出子目录

-m 多少字符;

那么,
2.统计文件夹中文件个数
ls -l ./|grep "^-"|wc -l
3.统计文件夹中目录个数
ls -l ./|grep "^d"|wc -l
4.统计文件夹下文件个数,包括子文件
ls -lR | grep "^-"| wc -l
5.统计文件夹下目录个数,包括子目录
ls -lR | grep "^d"| wc -l
#68
PHP框架-Yii / yii2 mysql 版本_yii2 数据库版本控制 mig...
上次发布者 jvip_chen - 2022-4月-27 02:56 下午
对于在日常的开发,我们用mysql,当线下分几个小组对一个网站进行开发的时候,在线下建立表,如何同步到线上就成了一个问题。

svn git等版本控制系统,可以控制文件的版本,yii2通过migrate,来进行sql文件的上传,以及执行。

migrate的使用:

1.首先创建migrate文件,语法很简单:

./yii migrate/create test_user
执行后,就会在/console/migrations/下面生成m160511_080937_test_user.php。

下面是执行log

[root@services datacenter_1000]# ./yii migrate/create test_user

Yii Migration Tool (based on Yii v2.0.7)

Create new migration '/www/web/datacenter/datacenter_1000/console/migrations/m160511_080937_test_user.php'? (yes|no) [no]:yes

New migration created successfully.

默认的路径是在console/migrations下面。

如果执行 ./yii migrate   就会执行console/migrations 下面的sql,当然,在执行前,需要到表migration 中查看信息,然后在决定执行那些sql,执行的是文件中的up()方法里面的sql,如果是事务操作,则不适用up(),而使用safeUp()方法。

有时候我们有自己的扩展,然后把migration放到自己的扩展里面,可以通过加入参数–migrationPath=@yii/log/migrations

来创建,执行相应的数据库脚本、

./yii migrate --migrationPath=@yii/log/migrations/
同样 down() , 采用 safeDown()方法。

如下是所有这些数据库访问方法的列表:

yii\db\Migration::execute(): 执行一条 SQL 语句
yii\db\Migration::insert(): 插入单行数据
yii\db\Migration::batchInsert(): 插入多行数据
yii\db\Migration::update(): 更新数据
yii\db\Migration::delete(): 删除数据
yii\db\Migration::createTable(): 创建表
yii\db\Migration::renameTable(): 重命名表名
yii\db\Migration::dropTable(): 删除一张表
yii\db\Migration::truncateTable(): 清空表中的所有数据
yii\db\Migration::addColumn(): 加一个字段
yii\db\Migration::renameColumn(): 重命名字段名称
yii\db\Migration::dropColumn(): 删除一个字段
yii\db\Migration::alterColumn(): 修改字段
yii\db\Migration::addPrimaryKey(): 添加一个主键
yii\db\Migration::dropPrimaryKey(): 删除一个主键
yii\db\Migration::addForeignKey(): 添加一个外键
yii\db\Migration::dropForeignKey(): 删除一个外键
yii\db\Migration::createIndex(): 创建一个索引
yii\db\Migration::dropIndex(): 删除一个索引

有时,你可能只需要提交一个或者少数的几个迁移,你可以使用该命令指定需要执行的条数,而不是执行所有的可用迁移。例如,如下命令将会尝试提交前三个可用的迁移:

yii migrate 3
你也可以指定一个特定的迁移,按照如下格式使用 migrate/to 命令来指定数据库应该提交哪一个迁移:

yii migrate/to 150101_185401 # using timestamp to specify the migration 使用时间戳来指定迁移
yii migrate/to "2015-01-01 18:54:01" # using a string that can be parsed by strtotime() 使用一个可以被 strtotime() 解析的字符串
yii migrate/to m150101_185401_create_news_table # using full name 使用全名
yii migrate/to 1392853618 # using UNIX timestamp 使用 UNIX 时间戳

其他:来自于官网资料。

还原迁移

你可以使用如下命令来还原其中一个或多个意见被提交过的迁移:

yii migrate/down # revert the most recently applied migration 还原最近一次提交的迁移
yii migrate/down 3 # revert the most 3 recently applied migrations 还原最近三次提交的迁移

重做迁移

重做迁移的意思是先还原指定的迁移,然后再次提交。如下所示:

yii migrate/redo # redo the last applied migration 重做最近一次提交的迁移
yii migrate/redo 3 # redo the last 3 applied migrations 重做最近三次提交的迁移

列出迁移

你可以使用如下命令列出那些提交了的或者是还未提交的迁移:

yii migrate/history # 显示最近10次提交的迁移
yii migrate/history 5 # 显示最近5次提交的迁移
yii migrate/history all # 显示所有已经提交过的迁移
yii migrate/new # 显示前10个还未提交的迁移
yii migrate/new 5 # 显示前5个还未提交的迁移
yii migrate/new all # 显示所有还未提交的迁移

修改迁移历史

有时候你也许需要简单的标记一下你的数据库已经升级到一个特定的迁移,而不是实际提交或者是还原迁移。这个经常会发生在你手动的改变数据库的一个特定状态,而又不想相应的迁移被重复提交。那么你可以使用如下命令来达到目的:

yii migrate/mark 150101_185401 # 使用时间戳来指定迁移
yii migrate/mark "2015-01-01 18:54:01" # 使用一个可以被 strtotime() 解析的字符串
yii migrate/mark m150101_185401_create_news_table # 使用全名
yii migrate/mark 1392853618 # 使用 UNIX 时间戳
#69
Linux 系统 / Linux下使用UUID挂载2t以上硬盘
上次发布者 jvip_chen - 2022-4月-26 05:57 下午
一、查看硬盘

lsblk
选择自己要挂载的硬盘,不要选错了

二、分区

sudo parted /dev/sdb #使用parted来对GPT磁盘操作,进入交互式模式

(parted) mklabel gpt # 将MBR磁盘格式化为GPT

(parted) mkpart primary ext4 0% 100% 将所有容量分为一个主分区

(parted) p #打印当前分区

(parted) q #退出

三、格式化

sudo mkfs.ext4 /dev/sdb1
四、挂载
sudo mkdir /disk1
sudo mount /dev/sdb1 /disk1 #挂载在disk1上

五、查看UUID

sudo blkid
六、修改/etc/fstab

加入下一行

UUID=cf116c95-b7f0-4ce4-b0da-7f2856784c43 /disk1 ext4 defaults 0 2
#70
WEB前端开发 / Layui 内置方法 - layer.close(关闭特定层...
上次发布者 jvip_chen - 2022-4月-22 11:54 上午
关于它似乎没有太多介绍的必要,唯一让你疑惑的,可能就是这个index了吧。事实上它非常容易得到:

当你想关闭当前页的某个层时

var index = layer.open();
var index = layer.alert();
var index = layer.load();
var index = layer.tips();
正如你看到的,每一种弹层调用方式,都会返回一个index

layer.close(index); //此时你只需要把获得的index,轻轻地赋予layer.close即可
如果你想关闭最新弹出的层,直接获取layer.index即可

layer.close(layer.index); //它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的
当你在iframe页面关闭自身时

var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index); //再执行关闭