# OS ํ์ธ
uname -a
cat /etc/issue
cat /etc/redhat-release
cat /etc/*release*
rpm --query centos-release
# OS bit ํ์ธ
getconf LONG_BIT
# ์ค์น๋ ํจํค์ง ํ์ธ
rpm -qa
# ์ด๋ฆฐ ํฌํธ ํ์ธ
netstat -tnlp
# list open files
lsof -i -nP | grep LISTEN | awk '{print $(NF-1)" "$1}' | sort -u
nmap localhost
# nginx ์ฌ์ฉ์ฌ๋ถ ํ์ธ
systemctl status ngin bx
# chmod chown chcon
ls -l ๋ก ๊ฐ ํ์ผ์ ๊ถํ์ ํ์ธ
# ํ์ผ์ ๊ถํ์ค์
chmod 777 test.txt
# ํด๋์ ๊ถํ์ค์
chmode -R 777 folder
drwxrwxrwx
# nginx
cd /etc/nginx/conf.d
# ์ฌ์์
sudo service nginx stop
sudo service nginx start
sudo service nginx reload
# ์ํํ์ธ
systemctl status nginx
telnet -tnlp
# list open files
lsof -i -nP | grep LISTEN | awk '{print $(NF-1)" "$1}' | sort -u
nmap localhost
# ๋๋ ํ ๋ฆฌ ์ฉ๋ํ์ธ
du -a directory
# ์์ถ
zip -r test.zip ./\*
unzip test.zip
unzip test.zip -d /home/oseongryu
# ํด๋ ๋ณต์ cp
cp -R repo backup_repo
# ์๋ก์ด ์ ์ ์์ฑ ํ, home์ nginx ์๋น์ค ๋ฐฐํฌ์
useradd test
# ํด๋น ํ์ ๋ํด์ ์ ๊ทผ๊ถํ์ ์ค์ผํจ
cd /home/
chmod 755 test
# ํ๋ก์ธ์ค๊ฐ ์ด๋ป๊ฒ ์คํ๋์ด ์๋์ง ํ์ธ
ps -ef |grep nginx
# ํฌํธํ์ธ
netstat -tnlp
# ์ ์๊ฐ๋ฅํ์ง ํ์ธ
curl http://localhost: 8086
# nginx์ ๋ฌธ์ ๊ฐ ์์ ๊ฒฝ์ฐ ํ์ธ
tail -f /var/log/nginx/error.log
# userdel
# ๊ณ์ , ํํด๋ ์ญ์
userdel -r testuser
# ๊ณ์ ์ญ์
userdel testuser
cat /etc/passwd | grep testuser
ll /home | grep testuser
# linux Embeded Tomcat SSL
keytool -genkeypair -alias tomcat-localhost -storetype jks -keyalg RSA -keysize 2048 -validity 3650 -keystore <your project path>/<your project class path>/keystore.jks
server:
port: 8443
ssl:
enabled: true
key-alias: tomcat-localhost
key-password: <your key password>
key-store: classpath:keystore.jks
key-store-type: PKCS12
key-store-password: <your store key password>
key-store-provider: SUN
# CentOS Default ์ค์
# 1. ๊ณ์ ์์ฑ
useradd testuser
passwd testuser
# 2. ์ผ๋ฐ๊ณ์ SUDO ์ฌ์ฉ
* sudoers ์ค์ ํ์ผ์ ์์ต๋๋ค.
su
visudo -f /etc/sudoers
* Allow root to run any commands anywhere
root ALL=(ALL) ALL
test ALL=(ALL) ALL
# 3. Setting
sudo yum update
sudo yum install wget -y
sudo yum install vim -y
sudo yum install java-1.8.0-openjdk-devel.x86_64 -y
sudo yum install git
sudo yum install net-tools
netstat -tnlp
sudo yum install curl
# 4. firewalld ์ค์
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
# UTC, KST
sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
date
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date
# CMD History
/home/.bash_history
history
history | less
history | tail
history 25
history | grep -i searchterm | less
# nc, nmap (Scan IP ranges)
nmap 127.0.0.1
nc -v 127.0.0.1 8080
# telnet
sudo yum install telnet
telnet 127.0.0.1 8080
# crontab
# 1. script
touch script_crontab_log.sh
chmod +x script_crontab_log.sh
---
#!/bin/bash
# Config Option
log_path="/home/user/logs"
expire_day=7
# Execute
find ${log_path}/* -type f -mtime +${expire_day} -exec rm -f {} \;
find /home/user/logs/* -type f -mtime +7 -exec rm -f {} \;
find /home/user/logs/* -name "filename*"
---
# 2. crontab
crontab -l
crontab -e
---
SHELL=/bin/bash
0 0 * * * /home/user/script_crontab_log.sh
---
//๋งค๋ถ
* * * * * /home/user/script_crontab_log.sh
// ๋งค๋ถ + ๋ก๊ทธ
* * * * * /home/user/script_crontab_log.sh > /home/user/cron/cron.log 2>&1
3. crontab log
/var/log/cron
# ssh connect
# 1. Client
ssh-keygen -t rsa
ssh-copy-id user@192.168.0.1
# ํน์ ssh-copy
ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.0.1
# ssh-copy-id ์๋
ssh ์ฐ๊ฒฐํ ์๋ฒ์ .ssh ํด๋์์
touch authorized_keys
chmod 600 authorized_keys
vi authorized_keys
ํด๋ผ์ด์ธํธ์์ ์์ฑํ id_rsa.pub์ ํ
์คํธ ๋ณต์ฌํด์ ๋ถ์ฌ๋ฃ๊ธฐํ ์ ์ฅ
# ~/.ssh/config
---
Host rootserv
HostName 192.168.0.1
Port 22
IdentityFile ~/.ssh/id_rsa_root
User root
---
2. Server
systemctl restart sshd
chmod 0700 ~/.ssh
chmod 0600 ~/.ssh/authorized_keys
# ssh proxyjump
Host root-proxy
HostName 192.168.0.99
Port 22
User root
Host root-was1
HostName 192.168.0.1
Port 22
User root
ProxyJump root-proxy
# systemd
# 0. ์คํ ์คํฌ๋ฆฝํธ chmod
chmod +x start_server.sh
chmod +x stop_server.sh
# 1. systemd์ ์๋น์ค ํ์ผ ์์ฑ
sudo vi /usr/lib/systemd/system/api_service.service
---
[Unit]
// systemctl status ๋ช
๋ น์ด์ ํ์๋๋ ์์ธ ์ค๋ช
Description=api_service
// ์ ๋์ด ์์๋๋ ์์๋ฅผ ์กฐ์ ํ์ฌ After์ ์ง์ ๋ ์ ๋์ด ์คํ๋ ์ดํ ์์๋๋ค.
After=network.target
[Service]
// ExecStart์ ์ํฅ์ ์ฃผ๋ ์ ๋ ํ๋ก์ธ์ค๊ฐ ์์๋๋ฉฐ, simple, forking, oeshot, idle ๋ฑ์ด ์๋ค.
Type=forking
User=serviceadmin
Group=serviceadmin
// syslog์์ ๊ตฌ๋ถํ๊ธฐ ์ํ ์ด๋ฆ
SyslogIdentifier=api_service
// ์คํ๋ ํ๋ก์ธ์ค์ ์์
๋๋ ํ ๋ฆฌ๋ฅผ ์ค์
WorkingDirectory=/home/serviceadmin
// systemctl ๋ช
๋ น์ด๋ก ์ธํ ์ค์ง๋ฅผ ์ ์ธํ๊ณ ํ๋ก์ธ์ค๊ฐ ์ข
๋ฃ๋ ํ ์ฌ์์ํ๋ค.
Restart=always
// Restart ์ต์
๊ณผ ์ฐ๊ฒฐ๋์ด ๋ช ์ด์ ์คํํ ์ง ๊ฒฐ์
RestartSec=0s
// ์๋น์ค๊ฐ ์์๋ ๋ ์คํํ ๋ช
๋ น์ด ๋๋ ์คํฌ๋ฆฝํธ ์์ฑ
ExecStart=/home/serviceadmin/start_server.sh start
// ์๋น์ค๊ฐ ์ ์ง๋ ๋ ์คํํ ๋ช
๋ น์ด ๋๋ ์คํฌ๋ฆฝํธ ์์ฑ
ExecStop=/home/serviceadmin/stop_server.sh stop
[Install]
// ์๋น์ค๊ฐ ์คํ๋ ํ๊ฒ ์ค์
WantedBy=multi-user.target
---
# 2. systemd ์ ์ฉ์ ์ํด ์ฌ์์
sudo systemctl daemon-reload
# 3. use
sudo systemctl start api_service.service
sudo systemctl stop api_service.service
sudo systemctl restart api_service.service
sudo systemctl status api_service.service
# * ์๋ฌ๋ฐ์์
sudo systemctl reset-failed api_service.service
sudo systemd-analyze verify api_service.service
# 4. ์๋ฒ ์ฌ๋ถํ
์ ์๋น์ค ์คํ
sudo systemctl enable api_service.service
systemctl status api_service.service
# connect: Network is unreachable
ping 8.8.8.8
# ๋ด๋ถ๋ง ์ค์น
# YUM์ด์ฉ์ ๋ค์ด๋ก๋๋ง ๋ฐ์ ์ ์๋ ํ๋ก๊ทธ๋จ ์ค์น (์ด๋ฏธ ์ค์น๋์ด์์์)
yum -y install yum-plugin-downloadonly
# ๋ ํฌ๋ฐ์ดํฐ ๋ง๋ค์ด์ฃผ๋ ํ๋ก๊ทธ๋จ ์ค์น
yum -y install createrepo
# repository ๋๋ ํ ๋ฆฌ ์์ฑ
mkdir /test
# ํ์ํ RPM์ ๋ค์ด๋ก๋
vi /etc/yum.repos.d/MariaDB.repo
---
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
---
# yum downloadonly์ ๊ฒฝ์ฐ ๋ค์ด๋ก๋๋ฐ์ ํ๋ก๊ทธ๋จ์ด ์ค์น๋์ด์์ผ๋ฉด ๋ค์ด๋ก๋ ๋ฐ์์ง์ง์์
# ๋ค์ด๋ก๋ ๋ฐ์ผ๋ ค๋ ํ๋ก๊ทธ๋จ์ ์ญ์ ํ๊ณ ๋ ๋ค๋ฅธํ๊ฒฝ์์ ๋ค์ด๋ก๋ ๋ฐ์์ผํจ
yum -y install [์ค์นํ ํ๋ก๊ทธ๋จ๋ช
] --downloadonly --downloaddir=/test
yum -y install MariaDB-server --downloadonly --downloaddir=/test
# Repo MetaData๋ฅผ ์์ฑํ๋ค
createrepo /test
---
[mariadb]
name = MariaDB
baseurl = file:///test/
enabled=1
gpgcheck=0
---
# ์ธ๋ถ๋ง์์ ์งํํ /test ๋๋ ํ ๋ฆฌ๋ฅผ ๋ด๋ถ๋ง ์๋ฒ /test์ ๋ณต์ฌ
vi /etc/yum.repo.d/MaraiDB.repo
# yum ์ ์ฅ์๋ฅผ ์ ์ฝ์ด์ค๋์ง ํ์ธ
yum repolist
# MariaDB YUM์ค์น ์คํ
yum -y install MariaDB
# SFTP ์ค์
# 1. SFTP๋ฅผ ์ํ SSH์ค์น
rpm -qa|grep ssh
# 2. SFTP ๊ตฌ์ฑํ๊ธฐ (SFTP ๊ถํ์ ์ป์ user์ group๋ง๋ค๊ธฐ)
sudo mkdir -p /data/sftp
sudo chmod 701 /data
# 3. ๊ทธ๋ฃน ๋ฐ ์ ์ ์์ฑ
3-1. ๊ทธ๋ฃน๋ช
sftpgroup ์์ฑ
sudo groupadd sftpgroup
3-2. ์ ์ ์์ฑ
-g : ๊ทธ๋ฃน sftpgroup ํฌํจ์ํด
-d : ์ ์ ๊ฐ /upload ๋๋ ํฐ๋ฆฌ์ ์๋๋ก ์ค์ , (/data/sftpgroup/upload)
-s : ์ ์ (sftpuser01)๊ฐ ssh ํ๋กํ ์ฝ์ด ์๋๊ณ , sftp ํ๋กํ ์ฝ๋ง ์ฌ์ฉํ๋๋ก ์ ํ
useradd -g sftpgroup -s /sbin/nologin sftpuser01
passwd sftpuser01
# 4. upload ๋๋ ํฐ๋ฆฌ ๋ง๋ค๊ณ , ๊ถํ ์ค์ ํ๊ธฐ
mkdir -P : ๊ฒฝ๋ก์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ผ๋ฉด ๋ง๋ค๊ณ ์์ผ๋ฉด ๋
๋
chown -R : ๊ฒฝ๋ก ํ์ ํ์ผ์ ๋ชจ๋ ๊ถํ ๋ณ๊ฒฝ
mkdir -p /data/sftpuser01/upload
chown -R root:sftpgroup /data/sftpuser01
chown -R sftpuser01:sftpgroup /data/sftpuser01/upload
# 5. SSH Configureํ์ผ ์์ ํ๊ธฐ
vi /etc/ssh/sshd_config
---
Match Group sftpgroup
ChrootDirectory /data/%u
ForceCommand internal-sftp
---
# 6. SSH ์๋น์ค ์ํ ํ์ธ ๋ฐ ์ฌ์์
service sshd status
service sshd restart
# 7. SFTP ์๋ ํ
์คํธ
yum list nmap
yum install nmap -y
nmap -n 192.168.0.1
# 8. ์๊ฒฉ์์ ์ ์ ํ
์คํธ
ssh sftpdev01@192.168.0.1
sftp -oPort=22 -i ~/.ssh/id_rsa_sftpdev01 sftpdev01@192.168.0.1
# ์๋ฒ ์ฌ์์, ์๋ฒ ์ข ๋ฃ
# 10๋ถ ๋ค ์ข
๋ฃ (halt)
shutdown -h +10
# 13์ ์ฌ๊ฐ๋ (reboot)
shutdown -r 13:00
# ์ฆ์ ์ฌ๊ฐ๋
shutdown -r now
# ์ฌ๋ถํ
reboot
# CentOS ์๋ฒ ์ค์ ํ์ธ
#
ip addr show
#
echo > /dev/tcp/127.0.0.1/22
echo $?
ping 127.0.0.1
curl 127.0.0.1:80
telnet 127.0.0.1 80
traceroute 127.0.0.1 -p 80
# oracle ๊ณผ Locale ๋ง์ถ๊ธฐ
SELECT * FROM nls_session_parameters WHERE PARAMETER LIKE '%DATE%' OR PARAMETER LIKE '%LANG%';
# ํ์ฌ ์ธ์ด์
ํ์ธ
locale
cat /etc/locale.conf
sudo vi /etc/locale.conf
# centos6
sudo vi /etc/sysconfig/i18n
# ์ฌ์ฉ๊ฐ๋ฅ ์ธ์ด์
ํ์ธ
localectl list-locales | grep -i ko_kr
# localectl list-locales | grep -i en_us
# ์ธ์ด์
๋ณ๊ฒฝ
sudo localectl set-locale LANG=ko_KR.utf8
# sudo localectl set-locale LANG=en_US.utf8
cat /etc/locale.conf
# ๋ณ๊ฒฝ์๋ฃ ํ reboot
sudo reboot
# reboot ํ ํ์ธ
locale
date
# timezone ๋ณ๊ฒฝ
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
# sshfs
sudo yum install -y epel-release
sudo yum install -y fuse-sshfs
mkdir /upload
sudo chmod -R 777 /upload
sudo sshfs devuser@192.168.0.1:/data/upload /upload -o allow_other
# nfs
https://it-serial.tistory.com/entry/Linux-NFS-%EC%84%9C%EB%B2%84-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%B6%95%EC%84%A4%EC%B9%98
# font error
# https://logical-code.tistory.com/191
# https://www.lesstif.com/lpt/linux-font-font-config-93127497.html
sudo yum install fontconfig -y
sudo yum install freetype fontconfig -y
# mem check
cat /proc/meminfo | grep Mem
# ํฐ์บฃ ๊ตฌ๋์ค catalina.out ์ญ์
# ํฐ์บฃ ๊ตฌ๋์ค catalina.out ์ญ์ ์ ํฐ์บฃ ์ฌ๊ธฐ๋ ์ ๊น์ง ์์ฑ๋์ง ์์
cd tomcatsetupfolder/logs
#!/bin/bash
curr_date=$(date +%Y%m%d)
# ์ค๋๋ ์ง๋ก ๋ฐฑ์
cp catalina.out catalina.out-$curr_date
# ๋ณต์ ํ ๋ก๊ทธ ์ด๊ธฐํ
cat /dev/null > catalina.out
# find
# 7์ผ ์ ํ์ผ ๋ชฉ๋ก ํ์ธ
find /home/user/logs/* -type f -mtime +7
# 7์ผ ์ ํ์ผ ๋ชฉ๋ก ํ์ธ ํ ์ญ์
find /home/user/logs/* -type f -mtime +7 -exec rm -f {} \;
# ํน์ ์ด๋ฆ ๋ค์ด๊ฐ ํ์ผ ๋ชฉ๋ก ํ์ธ
find /home/user/logs/* -name "filename*"
# centos GUI
systemctl get-default
systemctl set-default graphical.target
systemctl get-default
# GUI package setting
yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
yum -y groupinstall "GNOME Desktop" && systemctl set-default graphical.target && shutdown -r now
sudo yum install xrdp tigervnc-server
#https://medium.com/tech-guides/google-cloud-platform-gcp-access-linux-server-using-gui-running-in-gcp-instance-using-windows-201e315925a6
sudo su
passwd
systemctl start xrdp
systemctl enable xrdpCreated symlink from /etc/systemd/system/multi-user.target.wants/xrdp.service to /usr/lib/systemd/system/xrdp.service.
# logrotate
# ๋ก๊ทธ์ ๋น๋ํ๋ฅผ ๋ง๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ก๊ทธ ๋กํ
์ด์
# /etc/logrotate.conf
weekly
rotate 4
create
dateext
compress
include /etc/logrotate.d
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# /etc/logrotate.d
/app/logs/shorts.log {
daily
missingok
dateext
dateformat -%Y-%m-%d_%s
size 100M
rotate 30
notifempty
create 644 tomcat tomcat
copytruncate
}
# References
https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%A1%9C%EC%BB%AC%EC%84%9C%EB%B2%84_%EC%97%B4%EB%A6%B0_%ED%8F%AC%ED%8A%B8_%ED%99%95%EC%9D%B8
https://woonizzooni.tistory.com/entry/tcping-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%82%AC%EC%9A%A9%EB%B2%95
https://bkjeon1614.tistory.com/658
https://unix.stackexchange.com/questions/242782/centos-7-systemd-active-failed-result-start-limit
https://unix.stackexchange.com/questions/484431/allowing-non-root-users-to-manage-systemd-service-is-not-working
https://askubuntu.com/questions/692701/allowing-user-to-run-systemctl-systemd-services-without-password
https://sleeplessbeastie.eu/2021/03/03/how-to-manage-systemd-services-remotely/
https://serverfault.com/questions/841306/authentication-is-required-to-manage-system-services-or-units
sshfs: https://blog.sonim1.com/226
nfs: https://it-serial.tistory.com/entry/Linux-NFS-%EC%84%9C%EB%B2%84-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%B6%95%EC%84%A4%EC%B9%98
โ - bat-client_deploy - centos-docker โ