目录
添加删除用户
自动化修改密码
踢掉登录的用户
修改主机名
查看linux系统版本
查看磁盘空间
scp远程拷贝
禁止用户登录
linux定时任务 crontab
购买ecs服务器之后,就可以直接采用root用户远程登陆了, 接下来,我们创建一个普通用户,首先通过root登录服务器:
ssh root@ip
使用root用户登录Ubuntu系统以后,打开一个终端,在终端中执行如下Shell命令,创建一个新的普通用户(比如,这里创建的用户名为mt):
sudo useradd -m mt -s /bin/bash
这条命令创建了可以登陆的 mt 用户,并使用 /bin/bash 作为 shell。
修改用户指定的shell
如果要修改创建用户时指定的shell,有两种方式, 一种是直接修改/etc/passwd文件(需要切到root用户),另一种是通过以下命令:
usermod -s /bin/csh abc
修改用户密码
接着使用如下命令为这个新用户设置密码,请按系统提示输入两次密码:
sudo passwd mt
此时mt用户创建好了, 但是mt没有管理员权限, 可为mt 用户增加管理员权限,方便部署:
sudo adduser mt sudo
然后,使用mt用户登录,命令如下:
ssh mt@ip
sudo su
接下来可以先更新一下 apt,后续我们使用 apt 安装软件
sudo apt-get update
删除用户
# userdel -r haha
-r是为了同时删除用户的home目录和邮箱(/var/spool/mail), 这样才能彻底删除用户, 否则会导致用户的资料删除不完全,导致下次创建同名的用户时,提示用户已存在.
see 自动化修改linux密码
首先使用w命令查看所有在线用户:
[root@vm /]# w
20:50:14 up 9 days, 5:58, 3 users, load average: 0.21, 0.05, 0.02
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 101.45.224.253 20:48 0.00s 0.00s 0.00s w
root pts/1 101.45.224.253 20:49 17.00s 0.00s 0.00s -bash
踢掉用户命令:
命令格式:
pkill -kill -t TTY值
踢掉root pts/1:
pkill -kill -t pts/1
再用w命令查看是否已经强制踢掉:
[root@vm /]# w
20:55:10 up 9 days, 6:03, 2 users, load average: 0.03, 0.03, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 101.45.224.253 20:48 0.00s 0.00s 0.00s w
服务器主机默认主机名非常不好看,可以通过以下方式修改
cp /etc/hostname /etc/hostname.bak
vi /etc/hostname //修改
cat /etc/hostname >> /proc/sys/kernel/hostname
退出,重新登录
# cat /etc/issue
Ubuntu 18.04.2 LTS \n \l
# cat /proc/version
Linux version 4.15.0-52-generic (buildd@lgw01-amd64-051) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #56-Ubuntu SMP Tue Jun 4 22:49:08 UTC 2019
# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
# lsb_release -a
LSB Version: core-9.20170808ubuntu1-noarch:security-9.20170808ubuntu1-noarch
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic
# uname -a
Linux luckzone 4.15.0-52-generic #56-Ubuntu SMP Tue Jun 4 22:49:08 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
df命令
是Linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间:
df -hl
显示格式为:
文件系统 容量 已用 可用 已用% 挂载点
Filesystem Size Used Avail Use% Mounted on
udev 976M 0 976M 0% /dev
tmpfs 200M 2.7M 197M 2% /run
/dev/vda1 40G 3.4G 35G 9% /
tmpfs 997M 0 997M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 997M 0 997M 0% /sys/fs/cgroup
tmpfs 200M 0 200M 0% /run/user/1000
tmpfs 200M 0 200M 0% /run/user/0
以下面的输出为例,表示的意思为:
/dev/vda1 40G 3.4G 35G 9% /
容量是40G,用了3.4G,可用是35G,被挂载到根分区目录上(/)。
其他命令:
df -hl 查看磁盘剩余空间
df -h 查看每个根路径的分区大小
du -sh [目录名] 返回该目录的大小
du -sm [文件夹] 返回该文件夹总M数
df –help
du –help
scp -r a [email protected]: 拷贝文件夹到用户mt的根目录下
scp a.txt @xx.com:/home/xxwork 拷贝文件到work目录下
1. 通过修改shell类型,来禁止用户登录,该方式不仅可以禁止用户登录,还可以告诉他无法登录的原因;
chsh user -s /usr/sbin/nologin #将用户user的shell进行更改
nologin在不同版本的linux中可能位于不同的目录下, 可使用whereis命令查找。
该方式设置后依然会显示登录界面,效果如下:
$ ssh [email protected]
[email protected]'s password:
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-52-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
* Overheard at KubeCon: "microk8s.status just blew my mind".
https://microk8s.io/docs/commands#microk8s.status
* Canonical Livepatch is available for installation.
- Reduce system reboots and improve kernel security. Activate at:
https://ubuntu.com/livepatch
Welcome to Alibaba Cloud Elastic Compute Service !
Last login: Tue Nov 26 16:16:32 2019 from 103.37.140.24
This account is currently not available.
Connection to lo.com closed.
2. 更严格的禁止登录
使用命令usermod
usermod -L user 禁止帐号user登录
usermod -U user 允许账号登录
该方式的效果如下:
$ ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
仿佛用户不存在一样。
借助crontab可以实现定时任务,通过shell脚本来定时监控应用程序的运行,一旦发现应用程序崩溃,则重新启动应用程序
crontab [-u user] [ -e | -l | -r ]
选项说明
u 设置为某个用户设置crontab命令 ,通常有root执行
e 编辑crontab命令
l 查询现有的任务
r 删除所有任务
命令格式
分钟 小时 日期 月份 周 命令
0-59 0-23 1-31 1-12 0-7 cmd
// 每5分钟执行一次 /x.sh
*/5 * * * * /x.sh
从命令格式可以看出,可以实现分钟级的定时任务,如要实现秒级的任务,则需要采取一些技巧.
添加定时任务命令:
crontab -e
编辑定时任务:
* * * * * sleep 10; /sh/monitor.sh #每10s执行一次
查看定时任务列表:
crontab -l
监控脚本:
监控脚本用于检测应用程序进程是否还在,如果不在,则重新启动应用程序.
#!/bin/bash
DIR="/js/"
MAINPID=`ps -ef | grep "node xx.js" | grep -v grep `
if [ ! "$MAINPID" ];then
cd $DIR
node btc_usdt.js
echo "***************************************************"
echo "***********server node xx.js up**************"
echo "***************************************************"
else
echo "***************************************************"
echo "*******server node xx.js already up**********"
echo "***************************************************"
fi