Linux

分类下相关文章

systemd 保存 golang 服务日志到指定文件

需求场景 我想将 golang 打印的日志保持到指定日志文件,方便需要的时候进行查看。例如: log.Println("some log") 而默认用 systemd 管理该服务的时候,是看不到日志输出的。 systemd 应用日志配置 每次重启都重置日志文件为空,重新写入: StandardOutput=file:/var/my.log StandardError=file:/var/my.log 保留所有日志历史,每次都 append: StandardOutput=append:/var/my.log StandardError=append:/var/my_er ...

阅读全文...

linux 用户组权限

以一个实际案例来体验一下 linux 用户组的权限查看及配置。 需求场景 测试环境:ubuntu 20.04。 我在服务器上新建的用户,希望能够不用 sudo 就可以查看 nginx 的 access.log 日志文件。 无法直接查看 access.log 的原因 $ ls -lah -rw-r----- 1 www-data adm 1.3M Nov 23 08:24 access.log 看第一个字段的其他用户权限,为 000。即连读取的权限都没有。 最简单的解决方案 把新用户加入 adm 用户组。 首先查看 adm 用户组有哪些用户: $ sudo groupmems -g a ...

阅读全文...

Ubuntu 20.04 禁止 root 用户远程 ssh 登录服务器

为了防止被暴力破解服务器 root 密码,我决定禁止 root 用户远程登录。 禁用方法 修改 sshd 服务的配置文件: /etc/ssh/sshd_config 搜索 PermitRootLogin,由 yes 改成 no: PermitRootLogin no 修改完毕之后,重启 sshd 服务: sudo service ssh restart 测试 使用 root ssh 登录服务器,填写密码之后,会提示错误: Permission denied, please try again. 效果达到了。 注意 不要写错了,因为同目录下存在一个 /etc/ssh/ssh_confi ...

阅读全文...

ubuntu 20.04 添加新用户,并赋予 sudo 权限

避免所有操作和部署都使用 root 用户,以免被利用漏洞被入侵系统。 所以在新购的 Ubuntu 20.04 服务器上,部署服务之前,我需要先新建一个用户, 并赋予 sudo 权限。 然后禁用 root 用户远程登录服务器。 使用 root 登录服务器 ssh root@YOUR_SERVER_IP adduser adduser YOUR_USER_NAME 例如新建一个名为 elephant 的账号,按照提示依次填写信息即可。 # adduser elephant Adding user `elephant' ... Adding new group `elephant' (1000 ...

阅读全文...

linux top 命令按照内存使用率排序

默认 top 命令是按照 CPU 使用率排序的。 但是,某些进程启动后,并不活跃,就很难看到该进程的表现。例如,启动一个 golang gin 的 web 服务进程,在没有访客请求的情况下,虽然其内存占用有 18M,但其 CPU 使用率为 0,所以,永远排在 top 进程列表的后面,甚至看不到。 这时,我就想看看内存占用排名靠前的进程,可以按下大写 M,即 shift + M,就可以了。 切换回 CPU 排序,只需要按下大写 P。 ...

阅读全文...

Linux 下查看用户所属的用户组

查看当前用户 > groups zhongwei adm dialout cdrom floppy sudo audio dip video plugdev lxd netdev 查看指定用户 > groups root root : root > groups zhongwei zhongwei : zhongwei adm dialout cdrom floppy sudo audio dip video plugdev lxd netdev ...

阅读全文...

清理 history 命令的历史记录

history 命令的历史实际上是存储在 ~/.bash_history 文件里,查看一下 less ~/.bash_history 就会发现,里面存储了所有的命令记录。 所以,清除的方法自然是删除该文件即可。 rm ~/.bash_history Mac 系统 但是如果是使用的 Mac 下的终端,其默认的是 zshell,所以还需要删除另一个文件 rm ~/.zsh_history 重新打开终端,执行 history 就会发现命令已清除。 ...

阅读全文...

CentOS 中文乱码

打开配置文件 /etc/sysconfig/i18n 添加两行 LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8 使配置生效 source /etc/sysconfig/i18n 但是,有个问题,每次登陆都需要重新执行一遍 source,有没有永久解决的方法? 在服务器登录用户的 ~/.bashrc 文件最后加上此命令即可。 ...

阅读全文...

快速登录 laravel 项目对应的 mysql 数据库

Laravel 项目的开发联调阶段,我经常要到服务器上修改 mysql 的表结构。每次打开 .env 文件 copy mysql 用户名及密码,然后复制到 mysql 命令行登陆,非常繁琐。 于是,我写了一个 shell 脚本,可以自动获取 .env 中的 mysql 参数,一键登录 laravel 项目对应的数据库。 #!/bin/bash source .env mysql -u$DB_USERNAME -p$DB_PASSWORD -D$DB_DATABASE 脚本置于 /usr/local/bin/mysql_laravel.sh 添加执行权限 chmod +x /usr/loca ...

阅读全文...

tmuxinator 无法启动,no server running on /tmp/tmux-1000/default

好几台新装的 Ubuntu 系统 (18.04, 及 16.04) 中 tmuxinator 无法启动,报错 $ tmuxinator xxx /usr/lib/ruby/vendor_ruby/tmuxinator/project.rb:254: warning: Insecure world writable dir /home/zhongwei/bin in PATH, mode 040777 sh: 10: cd: can't cd to /home/zhongwei/work/xxx no server running on /tmp/tmux-1000/default no ser ...

阅读全文...

terminal 中查看当前使用的是什么 shell

突然发现我新安装的 ubuntu 18.04 上,terminal 中的提示符跟 tmux 中的不一致。于是,我想看看这两个分别使用的是什么 shell。 tmux 中 $ echo $0; /bin/zsh terminal 中 $ echo $0; bash 原理 $0 代表当前运行的进程名字,所以,当在 shell 中输出 $0 时,即是 shell 的名称。但是,如果是在脚本中输出,则是脚本的名字。 参考 https://askubuntu.com/questions/590899/how-to-check-which-shell-am-i-using ...

阅读全文...

ubuntu 18.04 - zsh: command not found: ifconfig

在新安装的 ubuntu 18.04 destop 上,想要查看本地 IP 地址 $ ifconfig zsh: command not found: ifconfig 我以为自己敲错命令了,反复试,还是 command not found 这个错误。用了十几年的命令,第一次遇到找不到的情况。。。 Google 了一下,才知道 ifconfig 已经被抛弃了。。。取而代之的是 ip 命令 新的 ip 命令,查看本机 IP 地址 ip address 可以缩写为 ip a $ ip address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 ...

阅读全文...

Ubuntu 18.04 将程序添加到 Gnome 桌面菜单栏

类似于 windows 的快捷方式,Gnome 会查看 /usr/share/applications ~/.local/share/applications 这两个目录下的 .desktop 文件。 例如 $ ls /usr/share/applications simplenote.desktop gedit.desktop $ ls ~/.local/share/applications wechat_dev_tools.desktop chrome-blpcfgokakmgnkcojhhkbfbldkacnbeo-Default.desktop simplenote.deskt ...

阅读全文...

ubuntu 上使用 systemd 重启时自启动 redis 及 laravel queue worker

之前一直使用 supervisor 来管理进程,但是偶然发现 systemd 已经成为主流并内置于 Ubuntu,所以拿 redis 测试一下效果。 测试环境 ubuntu 18.04 ubuntu 16.04 安装 Redis 下载最新的 redis https://redis.io/download 编译安装 tar xzvf redis-4.0.10.tar.gz cd redis-4.0.10 make make test sudo make install 确认安装完成 $ which redis-cli /usr/local/bin/redis-cli redis 的配置 ...

阅读全文...

以 www-data 的身份执行 crontab 的计划任务

新建了一个 Laravel 的计划任务,配置好 crontab * * * * * php /www/sunzhongwei/artisan schedule:run >> /dev/null 2>&1 同时,将当前登录用户,添加到了 www-data 的用户组,以防止无法访问 storage/logs 下的日志文件。 但是,执行了一段时间,导致 web 请求报错 file_put_contents(/www/sunzhongwei/storage/framework/cache/data/f1/6c/f16xxxx56b65501434d05bf1fc20c9fc ...

阅读全文...