لینوکس و شبکه

لینوکس و شبکه
طبقه بندی موضوعی
آخرین مطالب
  • ۹۹/۱۱/۱۳
    java

۳۸ مطلب با موضوع «Services/Daemon» ثبت شده است

۰۲
دی

Basic Concepts in Firewalld

Zones: The firewalld daemon manages groups of rules using entities called “zones”

predefined zones:

drop: The lowest level of trust. All incoming connections are dropped without reply and only outgoing connections are possible.
block: Similar to the above, but instead of simply dropping connections, incoming requests are rejected with an icmp-host-prohibited or icmp6-adm-prohibited message.
public: Represents public, untrusted networks. You don’t trust other computers but may allow selected incoming connections on a case-by-case basis.
external: External networks in the event that you are using the firewall as your gateway. It is configured for NAT masquerading so that your internal network remains private but reachable.
internal: The other side of the external zone, used for the internal portion of a gateway. The computers are fairly trustworthy and some additional services are available.
dmz: Used for computers located in a DMZ (isolated computers that will not have access to the rest of your network). Only certain incoming connections are allowed.
work: Used for work machines. Trust most of the computers in the network. A few more services might be allowed.
home: A home environment. It generally implies that you trust most of the other computers and that a few more services will be accepted.
trusted: Trust all of the machines in the network. The most open of the available options and should be used sparingly.

Rule Permanence: In firewalld, rules can be designated as either permanent or immediate. Most firewall-cmd operations can take the "--permanent" flag

Commands

Install

Install and Enable Your Firewall to Start at Boot

$ sudoyum install firewalld  Install
$ sudo systemctl enable firewalld
$ sudo reboot

Show Status(Information)

verify the service is running and reachable by typing:

$ sudo firewall-cmd --state
output:  running

Current Firewall Rules( which zone is currently selected as the default)

firewall-cmd --get-default-zone
output:
   publicPrint currently active zones

Print currently active zones

firewall-cmd --get-active-zones
output:
 privateDNS
   interfaces: eth1
 publicweb
   interfaces: eth0

list of the available zone

$ sudo firewall-cmd --get-zones
output:
block dmz drop external home internal public trusted work

see the specific configuration associated with a zone

$ sudo firewall-cmd --zone=home --list-all
output :
home
  interfaces: 
  sources: 
  services: dhcpv6-client ipp-client mdns samba-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules:

see the specific configuration associated with all zone

sudo firewall-cmd --list-all-zones

list of the available services

firewall-cmd --get-services
output
   RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

list services

sudo firewall-cmd --zone=public --list-all
sudo firewall-cmd --zone=public --list-services

List of ports

sudo firewall-cmd --zone=public --list-ports

 

Modify

Changing the Zone of an Interface

sudo firewall-cmd --zone=home --change-interface=eth0
output
success

Adjusting the Default Zone

sudo firewall-cmd --set-default-zone=home

allow http/https traffic in our “public” zone

sudo firewall-cmd --zone=public --add-service=http
sudo firewall-cmd --zone=public --add-service=http  --permanent
sudo firewall-cmd --zone=public --add-service=https
sudo firewall-cmd --zone=public --permanent --add-service=https

Opening a Port for your Zones

sudo firewall-cmd --zone=public --add-port=5000/tcp
sudo firewall-cmd --zone=public --add-port=4990-4999/udp
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
sudo firewall-cmd --zone=public --permanent --list-ports

change interface over zones

sudo firewall-cmd --zone=public --change-interface=eth0

 

URL

  • behrooz mohamadi nsasab
۰۱
دی

نمایش اطلاعات سرور پی اچ پی

  • http://192.168.40.42/?/Info
  • behrooz mohamadi nsasab
۰۱
دی

در آموزش زیر :
    آدرس شبکه :10.0.20.0/24
    نام دامنه: MyDomain.it
    سرور دی ان اس: 10.0.20.240
    سرورد دی ان اس برای فوروارد:192.168.100.12

$ sudo apt install bind9 bind9utils dnsutils resolvconf

$ sudo vim /etc/bind/named.conf.options

​​options {
    directory "/var/cache/bind";
    listen-on port 53 {localhost;10.0.20.0/24;192.168.40.0/24; };
    allow-query {localhost;10.0.20.0/24;192.168.40.0/24;};
    recursion yes;
    forwarders {
        192.168.100.12;
        8.8.8.8;
    };
    dnssec-validation auto;
    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

$ sudo vim /etc/bind/named.conf.local

    zone "MyDomain.it" IN {
        type master;
        file "MyDomain.it";
    };

$ vim /var/cache/bind/domain.ir

    $TTL 86400
@    IN    SOA             ns1.MyDomain.it. root.MyDomain.it(
        20191214           ;Serial
        3600               ;Refresh
        900                ;Retry
        604800             ;Expired
        86400              ;Minimum TTL
)

;name servers: NS records
    IN    NS       ns1.MyDomain.it.
    IN    A        192.168.40.40
    IN    MX 10    mail.MyDomain.it.

;name servers: A records
ns1.MyDomain.it.         IN    A    192.168.40.40
dns.MyDomain.it.         IN    A    192.168.40.40
root.MyDomain.it.        IN    A    192.168.40.40
MyDomain.it.             IN    A    192.168.40.40
chat.MyDomain.it.        IN    A    192.168.40.41
mail.MyDomain.it.        IN    A    192.168.40.42
email.MyDomain.it.       IN    A    192.168.40.42
pop3.MyDomain.it.        IN    A    192.168.40.42
smtp.MyDomain.it.        IN    A    192.168.40.42
imap.MyDomain.it.        IN    A    192.168.40.42
behrooz.MyDomain.it.     IN    A    192.168.40.48
  • لاگ افتادن تمام کوئری‌هایی که به سرور DNS زده می‌شود(دستور زیر را در سرور وارد نمایید):
# rndc querylog on
  • دستور زیر برای چک شدن named.conf و موارد included های آن است
$ sudo named-checkconf
  • دستور زیر برای چک شدن زون‌ها می‌باشد
# /usr/sbin/named-checkzone my.net /var/cache/bind/my.net.zone
  • در systemctl سرویس را در حالت اجرای اتوماتیک بعد از ریست قرار میدهیم
$ sudo systemctl enable bind9
$ sudo systemctl start  bind9
  • نکته: برای استفاده از فایل /etc/resolv.conf باید برنامه resolvconf نصب شده باشد

  URL

  URL

  • behrooz mohamadi nsasab
۰۹
شهریور

$ systemctl get-default                                         #show current default target for UI(Gnome or another UI)

$ systemctl set-default graphical.target               #set gui instead cli (change runlevel from 3 to 5)

or

rm '/etc/systemd/system/default.target'

ln -s /usr/lib/systemd/system/graphical.target   /etc/systemd/system/default.target

 

 

  • behrooz mohamadi nsasab
۱۲
مرداد

ps

 دستور پی اس بدون سوییچ فقط پروسس های ترمینال کنونی را نمایش خواهد داد

سوییچ l (ال) : توضیحاتی اضافه از پروسس های ترمینال کنونی  

پارامترهای F: 1: پردازش در حافظه در حال اجرا است

2: معرف یک systemProcess استفاده

3: پردازش در حافظه lock شده است بخاطر عملیات IO

4: پردازش در وضعیت SWAP است

پارامترهای:‌S

کاراکتر W: پردازش در حال انتظار است

کاراکتر R:  پردازش در حال اجرا

کاراکتر S:  پردازش در  حال sleep

کاراکتر Z: اجرای پروسس به اتمام رسیده است

کاراکتر T:  پروسس متوقف شده است

پارامتر PPID: پردازه پدر این پردازه - چه پروسسی این پردازه را به اجرا در آورده است


ps -el

نمایش تمام پردازه های فعال و درحال اجرا 

با قرار دادن nohup باعث می‌شویم که با logOff هم دستور از بین نرود

  • behrooz mohamadi nsasab
۱۵
تیر

URL

برای اطلاع پیدا کردن از اطلاعات ساختاری و تعداد کانکشن‌ها و موارد administrator  میتونیم ماژول را  status_module فعال نمایید


 vim httpd.conf

<Location "/server-status">
    SetHandler server-status
    Require host example.com
</Location>

سپس به آی پی رفته و در ادامه عبارت server-status را تایپ نمایید


127.0.0.1/server-status

  • behrooz mohamadi nsasab
۰۸
خرداد

CLOSED: #Indicates that the server has received an ACK signal from the client and the connection is closed

CLOSE_WAIT: #[Indicates that the server has received the first FIN signal from the client and the connection is in the process of being closed]

#[So this essentially means that his is a state where socket is waiting for the application to execute close()]

#[A socket can be in CLOSE_WAIT state indefinitely until the application closes it]

#[Faulty scenarios would be like filedescriptor leak, server not being execute close() on socket leading to pile up of close_wait sockets]

ESTABLISHED: #Indicates that the server received the SYN signal from the client and the session is established

FIN_WAIT_1: #Indicates that the connection is still active but not currently being used

FIN_WAIT_2: #Indicates that the client just received acknowledgment of the first FIN signal from the server

LAST_ACK #Indicates that the server is in the process of sending its own FIN signal

LISTENING: #Indicates that the server is ready to accept a connection

SYN_RECEIVED: #Indicates that the server just received a SYN signal from the client

SYN_SEND: #Indicates that this particular connection is open and active

TIME_WAIT: #Indicates that the client recognizes the connection as still active but not currently being used

  • behrooz mohamadi nsasab
۲۳
ارديبهشت

Resolve:

systemd-resolve -t MX gmail.com   #show mail server

systemd-resolve -t SOA gmail.com   #show SOA .     Start Of Authority (More administrative information)   URL

systemd-resolve 85.214.157.7        #Get domain name

nslookup domain.ir [#Finding The IP Address of an Host from default dns server]

nslookup domain.ir 8.8.8.8[#Finding The IP Address of an Host From non default dns server]

nslookup -querytype=mx domain.ir[ #Find Mail Servers for a Domain]

nslookup -query=mx domain.ir [#Find Mail Servers]

nslookup -query=ns domain.ir [ #Find NameServers]

nslookup -query=soa domain.ir [ #display the SOA record (information about the domain]

nslookup -query=any domain.ir [ #display all the available DNS records]

host -la domain.com [Show all record with Information]

dig Domain.it axfr [Show all record with Information]

systemd-resolve --statistics          #informations

 

Flush the DNS Cache   URL

Method 1: Using systemd-resolve to flush DNS-Cache

sudo systemd-resolve --flush-caches

sudo systemd-resolve --statistics

 

Method 2: Using dns-clean to flush DNS-Cache

sudo /etc/init.d/dns-clean start

 

 

Resolve.conf

Install:

sudo apt install resolvconf

For fix and NotChange file:

vim  /etc/NetworkManager/NetworkManager.conf

#Add below to main area :

dns=none

 

  • behrooz mohamadi nsasab
۲۶
اسفند

  • modprobe rt2800usb #Load module in kernel
  • modprobe -r rt2800usb #remove module from kernel
  • or  [rmmod rt2800usb] #remove module from kernel
  •  lsmod | grep rt2800 #check is load


Permanent load modules:

vim /etc/modules-load.d/rt2800usb.conf

  • rt2800usb #add this line
Check if systemd service loaded the module:

  • systemctl status systemd-modules-load.service

The output should look like this:


systemd-modules-load.service - Load Kernel Modules
  Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
  Active: active (exited) since Wed, 03 Apr 2013 22:50:57 +0000; 46s ago
        Docs: man:systemd-modules-load.service(8)
              man:modules-load.d(5)
 Process: 260 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=0/SUCCESS)

  if status=1/FAILURE

 journalctl -b

URL

  • behrooz mohamadi nsasab
۲۱
اسفند

SELinux stands for Security-Enhanced Linux. It is a way to improve the server security.


cat /etc/selinux/config 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Show state:

  • $ sestatus       #show state
  • $ getenforce   #show state]

change[not permanent]:

  • $ setenforce [enforcing] or [permissive]      

Change Permanently:

vim /etc/selinux/config
SELINUX=enforcing


  • behrooz mohamadi nsasab
۱۱
اسفند

سوکت‌های فعلی سرور که به هیچ فایلی از هارد وصل نشده است - پردازه‌های موجود در رم که ممکن است ویروس باشند

lsof +L1

  • behrooz mohamadi nsasab
۰۴
اسفند

  • نمایش اطلاعات سروری که در آن برنامه VirtualBox در حال اجرا می‌باشد

vboxmanage list hostinfo

  • نمایش لیست وی ام های موجود در سرور

vboxmanage list vms

  • نمایش لیست وی ام های موجود در سرور با اطلاعات کامل

vboxmanage list vms --long

  • نمایش لیست وی ام های روشن در سرور

vboxmanage list runningvms 

  • نمایش لیست وی ام های روشن در سرور با اطلاعات کامل

vboxmanage list runningvms --long

  • نمایش تمامی اطلاعات یک وی ام برحسب نام یا uuid

vboxmanage showvminfo {UUID}

  • روشن کردن یک وی ام در حالت headless

vboxheadless --startvm {UUID}

  • توقف در وضعیت یا pause  یک وی ام

vboxmanage controlvm {UUID} savestate

  • خاموش کردن یک وی ام

vboxmanage controlvm {UUID} acpipowerbutton

  • behrooz mohamadi nsasab
۳۰
بهمن

برای راه اندازی وی پی ان از طریق terminal در لینوکس به روش زیر عمل مینماییم

modprobe nf_conntrack_pptp    # add pptp module to kernel
pppd call linuxconfig     # stablished Tunnel
route add default dev ppp0    #route all traffic to Tunnel

اسکریپت شده دستورات بالا:

#!/bin/bash
username=$1;
password=$2;
if [[ "$username" != "" && "$password" != "" ]]; then
echo "INSTALL STARTING ..."
# rpm -ivh pptp-1.7.2-22.el7.x86_64.rpm    #if is not install in server please install it
modprobe  nf_conntrack_pptp
echo "$username   PPTP    $password        *">/etc/ppp/pap-secrets
echo 'pty "pptp 10.10.10.10 --nolaunchpppd"    #10.10.10.10 Is Gateway's ip
name '$username'
remotename PPTP
#require-mppe-128
file /etc/ppp/options.pptp
ipparam linuxconfig'>/etc/ppp/peers/linuxconfig
echo 'lock
noauth
refuse-eap
refuse-chap
refuse-mschap
nobsdcomp
nodeflate'>/etc/ppp/options.pptp  #or comment refuse-pap line in tis file
pppd call linuxconfig
route add default dev ppp0
else
echo "please insert username password."
fi



نکته: یکی از dependency های اسکریپت بالا URL

دستورات بالا با دوفایل ارتباط دارد که این فایل‌ها وقتی بخواهیم بدون اسکریپت بالا پیکربندی کنیم به صورت زیر عمل خواهیم کرد.


vim /etc/ppp/peers/linuxconfig

pty "pptp 10.10.10.10 --nolaunchpppd" 
name USERNAME
remotename PPTP
#require-mppe-128
file /etc/ppp/options.pptp
ipparam linuxconfig


vim /etc/ppp/pap-secret

# Secrets for  authentication using PAP
# client server secret      IP addresses
username     PPTP    password     *

  • behrooz mohamadi nsasab
۱۱
بهمن

  1. برنامه  open-vm-tools در لینوکس جهت همگام سازی ماشین مجازی با برنامه vmware می‌باشد(مشابه vmwareTools)
  • behrooz mohamadi nsasab
۱۰
بهمن

بایستی در تنظیمات apache در فایل php.ini مقادیر post_max_size و upload_max_filesize را زیاد کرده (دقت شود که مقدار 
post_max_size بیشتر ازupload_max_filesize  باشد) و سپس سرویس آپاچی ریست شود


post_max_size

upload_max_filesize

  • behrooz mohamadi nsasab
۰۶
تیر
روش زیر اتصا ل یک مسیر اف تی پی به یک فولدر در سروررا توضیح میدهد
ابتدا بسته curlftpfs  را نصب نمایید (نکته: اگر به مشکل خورد ابتدا بسته fuse را نصب نمایید)
vim /etc/init.d/mountftp
#!/bin/sh
#
# Run-level Startup script for curlftpfs
#
# chkconfig: 345 91 19
# description: Startup/Shutdown the curlftpfs
 
# FTP user, password, and host (you can specify the port also eg. ftp.example.com:2002)
ftpUser=user                    #نام کاربری از اف تی پی
ftpPass=password                #پسورد کاربر اف تی پی
ftpHost=ftp.example.com         #مسیر  اف تی پی مورد نظر که باید به  فولدر متصل شود
mPath="/var/mounted/ftp"      #فولدر مورد نظر در سرور فعلی که قرار است مسیر اف تی پی  به آن متصل شود
 
# Create the mounted to dir if doesn't exist
if [ ! -d $mPath ]; then
    mkdir -p $mPath
fi
 
case "$1" in
    start)
        curlftpfs $ftpHost $mPath -o user=$ftpUser:$ftpPass,allow_other
        ;;
    stop)
        fusermount -u $mPath      
        ;;
    reload|restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: $0 start|stop|restart|reload"
        exit 1
esac
exit 0
سپس قرار دادن این اسکریپت در autostart به روش زیر:
chmod 755 /etc/init.d/mountftp
chkconfig mountftp on

 

دستورات قابل اجرا :
# Start
service mountftp start
 
# Restart and reload
service mountftp restart
service mountftp reload
 
# Stop
service mountftp stop


لینک مفید از این مطلب:  LINK

  • behrooz mohamadi nsasab
۲۲
خرداد

رفع مشکل bad gateway


گاهی اوقات ممکن است بدون دلیل مشخص صفحات، خطای bad gateway بدهد.

برای حل این مشکل می‌بایست به لاگ خطا در نشانی /var/log/nginx/error.log مراجعه کرد. اگر مشکل به صورت زیر باشد:

upstream sent too big header while reading response header from upstream,

می‌بایست در در تنظیمات کانفیگ (/etc/nginx/nginx.conf) سه خط زیر را نیز اضافه نمود:

proxy_buffer_size   128k;
proxy_buffers   4 256k;
proxy_busy_buffers_size   256k;

  • behrooz mohamadi nsasab
۲۲
خرداد

نکته: سرویس NginX همانند سرویس آپاچی در لینوکس و سرویس IIS در ویندوز است  که یک وب سرور به ما میدهد تا بتوانیم در بستر آن صفحات وب را به اشتراک بگذاریم


نصب: از دستورات package manager  سیستم عامل استفاده نمایید

Debian:  sudo apt-get install nginx
CentOS:  sudo yum install nginx

نکته: فایل های تنظیماتی سرویس  NginX  در مسیر etc/nginx قرار دارد

در فایل زیر:

/etc/nginx/nginx.conf

در خطی که با  عبارت  include آغاز میشود، مسیر زیر را مطابق نمونه قرار بدهید (در مسیر زیر برای هر دامنه یک فایل تنظیماتی بسازیم و کانفیگ هر سایت و یا دامنه را مجزا درون آن قرار دهید)

include /etc/nginx/site_available/*.conf;



یعنی در مسیر site_available به ازای هر فایلی که با پسوند conf وجود دارد و محتوی کانفیگ یک دامنه دلخواه است آن فایل خوانده می‌شود و یک دامنه را کانفیگ می‌کند.

بطور  مثال برای دامنه BMS  از فایل BMS.conf  در مسیر site-available  که در رهنگر مورد استفاده قرار میگرفته استفاده شد.


تمپلیت خوب برای استفاده در هر دامنه جدید:

upstream backend1  {
  ip_hash;
  server 172.16.85.237:8080 max_fails=3  fail_timeout=15s;
  server 172.16.85.238:8080 max_fails=3  fail_timeout=15s;
}
server {
        listen 80;
        server_name 172.16.85.244;
        client_max_body_size 250M;
 
location / {
        proxy_set_header X-Forwarded-Proto http;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://backend1;
        rewrite ^/$ /Ganjeh last;
       }
}



نکته:  کانفیگ بالا در فایل موجود در Site-available قرار خواهد گرفت.

بعنوان مثال برای فایل BMS.conf در رهنگر مشهد از شکل زیر استفاده شد:

#pstream backend  {
#  server 127.0.0.1:8080 ;
#}
server {
        listen 80;
        server_name 188.253.0.16;
        server_name mashhad.etrack.ir;
 
location / {
        proxy_set_header X-Forwarded-Proto http;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080/BMS;
       }
location /BMS {
        proxy_set_header X-Forwarded-Proto http;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080/BMS;
       }
 
location /MapCache {
        proxy_set_header X-Forwarded-Proto http;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8080/MapCache;
       }
}


  • behrooz mohamadi nsasab
۲۲
خرداد

برای راه اندازی سرویس https در Nginx به روش زیر عمل کنید:

نکته: در هرباری که تغییری در تنظیمات انجام میدهید از دستور زیر استفاده نمایید تا مطمئن شوید که تغییرات درست بوده و موجب خطا نمیشود(سرویس را ریست ننمایید و از دستور زیر استفاده نمایید)

nginx -t

در زیر یک نمونه فایل config قبل ازآعمال تغییرات آورده شده تا تغییرات بوضوح مشاهده شود:

server {
         listen 80;
         server_name minitapp.ir;
         server_name www.minitapp.ir;
         client_max_body_size 300M;
         
         location / {
                proxy_pass http://192.168.2.101:8080/;
                proxy_set_header X-Forwarded-Proto https;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For
                $proxy_add_x_forwarded_for;
        }
}

همچنین بلاک زیر بعد از بروز تغییرات می‌باشد:

server {
         listen 80;                                                         # http port
         server_name minitapp.ir;                                           # domain
         server_name www.minitapp.ir;
         client_max_body_size 300M;
         return 301 https://$server_name$request_uri;                       # Redirect to (return301 means redirect)
}
 
server {
         listen 443;                                                                                 # https port
         server_name minitapp.ir;                                                         # domain
         server_name www.minitapp.ir;                                                # domain
         client_max_body_size 300M;
         ssl on;
         ssl_certificate /etc/nginx/sites-cert/minitapp.ir.pem;            # Pem(CertificateFile) file
         ssl_certificate_key /etc/nginx/sites-cert/minitapp.ir.key;      # Key(CertificateFile) file
         ssl_session_timeout  5m;                                                        # Optional
         ssl_protocols  TLSv1;                                                               # Optional
         ssl_ciphers  HIGH:!aNULL:!MD5;                                             # Optional
         ssl_prefer_server_ciphers   on;                                               # Optional
 
         location / {
                proxy_pass http://192.168.2.101:8080/;
                proxy_set_header X-Forwarded-Proto https;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For
                $proxy_add_x_forwarded_for;
        }
}

نکته: مسیر زیر یک مسیر دلخواه است که در سرور Nginx است که برای نگهداری فایل های ca در نظر گرفته شده است

/etc/nginx/sites-cert

نکته: return 301 به معنی این است که صفحات را به آدرس مورد نظر منتقل(redirect) کن

نکته: اگر بخواهیم فقط از سرویس https استفاده نماییم باید از داخل بلاک server با پورت 80 تمامی location ها را پاک کرده و به یک بلاک جدید با همان نام server و با شماره 443 (بجای 80) قرار دهیم (توجه شود که هیچ مقداری در location ها تغییر نخواهند کرد)-(توجه شود که directive با عنوان  proxy در تگ http مشاهده نشود)

نکته: اگر بخواهیم از هردو پروتکل http و https استفاده نماییم، آنگاه خط return 301 را از محل listen 80 حذف کرده و به بلاک های آن دست نمی‌زنیم.

  • behrooz mohamadi nsasab
۱۳
خرداد
اسکرین برای بوجود آوردن چند session  در bash کاربرد دارد اگر بخواهیم از یک ترمینال جندین ترمینال مشتق شود بطوری که هرکدام مستقلا باشند و درصورت بسته شدن آنها(detach)، کارشان مختل نشود، از screen  استفاده میکنیم:
نکته : تقریبا در تمامی دستورات اسکرین از دستور کلید ترکیبی ctrl به همراه a  به همراه کلید دیگری استفاده میشود.
برای ایجاد یک اسکرین از دستور زیر استفاده می‌شود(در بش اصلی):
sudo apt-get install screen
sudo yum install screen

screen -S NAME
برای برگشتن به bash  اصلی(detach شدن اسکرین ایجاد شده که در آن بودیم-این دستور را باید در محیط اسکرین بزنیم):
ctrl+a, And d
 برای دیدن تمامی سشن های باز از اسکرین(در بش اصلی):
screen -ls

برای رفتن به یک اسکرین دلخواه(در بش اصلی)(reattach):
screen -r NAME
screen -x  NAME

کشتن یک اسکرین(در بش اصلی):
screen -S NAME -X quit
کشتن یک اسکرین(در محیط اسکرین):
ctrl+d
رفتن به اسکرین بعدی(در محیط اسکرین)
ctrl+a, And n
رفتن به اسکرین قبلی(در محیط اسکرین)
ctrl+a, And p
نمایش تمام اسکرین های باز(در محیط اسکرین)
ctrl+a, And "
رفتن به اسکرین شماره خاص(در محیط اسکرین)
ctrl+a, And 0-9
 
 

    Ctrl+a " to visualize the opened windows
    Ctrl+a p and Ctrl+a n to switch with the previous/next window
    Ctrl+a number to switch to the window number
    Ctrl+d to kill a window
    screen -ls to list the sessions and their status
    screen -S session_name to start a session with a given name. The name should be unique
    Ctrl+a d to detach a session
    screen -x session_name to resume (reattach) a session knowing its name
    screen -S session_name -X quit to terminate a detached session
 
Layout:
    Ctrl+a S to split horizontally
    Ctrl+a | to split vertically
    Ctrl+a <Tab> to switch to the next region
    Ctrl+a X to close the current region
    Ctrl+a Q to close all the regions but the current one

   URL1
   URL2
   URL3

  • behrooz mohamadi nsasab
۲۴
ارديبهشت
مشاهده اطلاعاتی نظیر رم و هارد و سریال پورت و یو اس بی
dmesg | grep -E "memory|dma|usb|tty"



پاک کردن پیغام های موجود برای دوری از شلوغی خروجی:
dmesg -C



 مشاهده خروجی بصورت رنگ بندی شده به جهت وضوح بیشتر
dmseg  -L



تنها یک سطح خاص از مطالب را نمایش بدهد(emerg,alert, crit, err, warn,notice,info,debug)
dmesg --level=err,warn



نمایش تایم در لاگ
dmesg -T
dmesg -Tx



بصورت real time  لاگ‌ها را مشاهده نمایید
dmesg --follow



مشاهده پیغام های بافر شده(لاگ کارهایی که هنوز مانده است تا انجام بشود و خروجی عمل به مرحله ظهور نرسیده است)
dmesg -r  #raw message buffer



اگر بخواهیم برنامه dmesg را اجبار کنیم که از فایل های syslog هم بخواند(مثلا فایل /dev/kmsg. را هم بخواند)
dmesg -S


نکته: دستورات dmesg از فایل “/var/log/dmesg”  خوانده میشود.
  • behrooz mohamadi nsasab
۰۵
فروردين
CentOS:            sudo yum install git
Debian/Ubuntu: sudo apt-get install git
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
cd /opt/letsencrypt
sudo -H ./letsencrypt-auto certonly --standalone -d example.com -d www.example.com
نکته: برای هر دامنه ای که نیاز به داشتن ca است از سوییچ d استفاده شده و سپس نام آن درج شود
نکته: برای این که دستور بالا به درستی کار کند Nginx را پایین بیاورید.
-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: a

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: n
در بالا لایسنس را می‌پذیریم:
سپس n  را وارد میکنیم
در ادامه اگر کار به درستی تمام شده باشد باید پیامی مشابه زیر نمایش شود(Congratulations):
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2018-05-27. To obtain a new or tweaked
   version of this certificate in the future, simply run
   letsencrypt-auto again. To non-interactively renew *all* of your
   certificates, run "letsencrypt-auto renew"
 - If you like Certbot, please consider supporting our work by:
   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
نکته: certificate ها در مسیر زیر ذخیره می شوند:
sudo ls /etc/letsencrypt/live
با دستور زی رمسیر فایل و کلید certificate را مشاهده خواهید کرد:

./certbot-auto certificates
Found the following certs:
Certificate Name: example.com
Domains: example.com www.example.com
Expiry Date: 2018-05-27 20:49:02+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem

لینک های مفید: URL

 لینک مفید : URL







  • behrooz mohamadi nsasab
۰۵
فروردين
برنامه at به برنامه زمانبندی (schedule) در لینوکس است که برای استفاده از آن باید این برنامه را نصب نماییم
sudo apt-get install at
برای شروع به کار(اعلام زمان اجرای یک تسک) دستور زیر را وارد میکنیم:

at 09:01 AM 07/20/2018
سپس وارد محیطی میشویم که باید در آن دستورات تسک را وارد نماییم.سپس ctrl+D را می‌زنیم و از محیط دستورات خارج می‌شویم

مثلا اگر دستور زیر یک ایمیل ارسال می‌کند:
echo "TEXTBODY" | mail -s "SUBJECT"MailAddress1 MailAddress2 MailAddress3
آنگاه اگر یخواهیم در زمان 20181225 ایمیلی ارسال بشود از روش زیر اقدام میکنیم:
behrooz@Home:~$  at 09:01 AM 12/25/2018
> echo "یادآوری" | mail -s "عنوان" mohamadinasab@viratech.ir behroozmohammadinasab@gmail.com
ctrl+D
behrooz@Home:~$
لینک مفید:  URL

  • behrooz mohamadi nsasab
۰۸
اسفند

1- sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
2- sudo apt-get install vnc4server
3- vncserver
4- vncserver -kill :1
5- vim ~/.vnc/xstartup 
change:
 
#!/bin/sh
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
 
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
 
 
6- vncserver

  • behrooz mohamadi nsasab
۱۶
بهمن

اگر بخواهیم در سرور لاگ تولید شود و به مسیر

/var/log/message.log

برور میتوان از دستور زیر استفاده کرد

/usr/bin/logger -t TILE  "متن"


همچنین با نصب برنامه lnav می‌توان لاگهای سرور را به راحتی مشاهده کرد:

sudo apt-get install lnav

sudo lnav /var/log

همچنین اگر بخواهیم بصورت دستی در مسیری دلخواه لاگ تولید کنیم می‌توانیم از تابع زیر استفاده نماییم

print_log () {
    MESSAGE=$1                                                             # Title for log

    TIME=$(date +%Y/%m/%d-%H:%M:%S)                      # Get Tile

    echo "$TIME ---- $MESSAGE" >> مسیرنگهداری لاگها          # Add log message to file

}

  • behrooz mohamadi nsasab
۰۸
بهمن

از برنامه sshpass برای ssh  زدن استفاده میشود به نحوی که در همان لحظه که ssh زده میشود، پسورد نیز خودکار و ارد شده و لاگین صورت گیرد و منتظر  وارد کردن پسورد نشود:

ابتدا آن را نصب نمایید؟:

sudo apt-get install sshpass

sudo yum install  sshpass

syntax استفاده از این برنامه (دستور به شکل زیراست):

sshpass -p PASSWORD  ssh USERNAME@IP -p port

اگر بخواهید از طریق یک سرور به سرور دوم ssh بزنید (از طریق برنامه sshpass-یعنی دراتصال هردو ssh نیاز به زدن پسورد نباشد) باید در سرور واسط برنامه sshpass نصب شده باشد و همچنین از دستور زیر استفاده نمایبد:

sshpass -p "پسوردسرورواسط" ssh -t USENAME@IP(سرورواسط) sshpass -p "پسوردسرورمقصد" ssh USERNAME@IP(سرور دوم)

  • behrooz mohamadi nsasab
۱۴
مهر
دستور start نمودن یک سرویس:

# service نام سرویس start
همچنین دستور فوق برای توزیع‌های لینوکسی مبتنی بر Debian به شکل زیر نیز عمل اجرا میشود:

# /etc/init.d/نام سرویس start

نکته:عملیاتstatus, 1 force-reload, restart, stop2 یک سرویس به هردو نحو بالا نیز انجام می شود.

1-خواندن مجدد تنظیمات یک سرویس از فایل‌های سیستمی آن سرویس

2-وضعیت سرویس که در حالت روشن ویا خاموش است

  • behrooz mohamadi nsasab
۱۴
مهر

از امکانات مهمی که GRUB  ارائه می دهد ارائه رمز عبور، امکان ارسال پارامترهای Boot به کرنل، همچنین انجام اینکار بدون هنگ کردن و بروز مشکل برای فایل‌های تنظیماتی GRUB، امکان Boot   سیستم عامل ویندوز در کنار سیستم عامل لینوکس است. همچنین GRUB  تکنولوژی LBA یا Logical Block Addressing را پشتیبانی می‌کندکه  امکان دستیابی I/O  فایلهای بوت را بصورت ساده مهیا میکند. GRUB توانایی بوت کردن سیستم عامل در شبکه را نیز دارد.
در زمان بروز خطا، LILO بایستی مجددا نصب شود تا بتواند MBR را تعمیر کند،  اماGRUB آن را در حالت خط فرمان درآورده تا بصورت دستی یا خودکار تنظیمات تعمیر بشود.
GRUB دارای پیچیدگی های بیشتری نسبت به LILO است. Grub برای سیستم عامل های مختلف قابل استفاده است اما LILO برای سیستم عامل های محدودی قابل استفاده است.

نکته: قبل از  بالا آمدن سیتم عامل در منوی Grub باز فشردن دکمه `e` میتوان به تنظیمات grub راه یافت.
نکته:در زمان نمایش منوی Grub سیستم عامل پیشفرض بعد از گذشت زمان 10 یا 30 ثانیه بصورت خودکار انتخاب خواهد.


Chan Load
زمانی که Boot Loader های سیستم عاملها یکدیگر را Load کنند، این تعریف معنا پیدا خواهد کرد.




تنظیم پارامترهای اولیه LILO

# /usr/sbin/liloconfig

نصب Grub

# grub-install /dev/sda

تعمیر ونصب مجدد Grub2 درMBR  قراردادن آن در فایل تنظیمات اصلی Grub2 به آدرس زیر 3:

# grub-mkconfig > /boot/grub/grub.cfg

تنظیمات grub2 در مسیرزیر قراردارد.

/boot/grub/grub.cfg

تنظیماتgrub  در مسیرزیر قراردارد.

/boot/grub/menu.lst

تنظیمات LILO در مسیرزیر قراردارد.

/etc/lilo.conf

initrd در مسیر زیر قراردارد

/boot/initrd. . . . img

معرفی پارامترهای تنظیماتی
در تنظیمات Grub ویا در صفحه منوی Grub برخی از پارامترها بصورت زیر میباشد.

Default

این پارامتر سیستم عامل پیشفرض را که پس از گذشت زمان 10 ثانیه می بایست Load بشود را تنظیم میکند.را Load میکندdefault=2 یعنی سیستم عامل دوم در منوی سیستم عامل های Grub 2
نکته: اندیس در Grub1 از صفر شروع می شود، ولی در Grub2 از یک شروع میشود.

splashimage=(hd0,5) /boot/grub/splash.xpm.gz

نمایش عکس زمینه گرافیکی در آدرس تعریف شده (هارد اول، پارتیشن پنجم و آدرس موردنظر )

Splash

عکس پس زمینه

Title

عنوان نمایش گراب

root (hd0,5)

مسیر روت را مشخص مینماید که درکدام پارتیشن است

kernel /boot/vmlinuz-2.6.26.8.125 ro quite

در منوی Grub در لحظه شروع با فشردن F10 کرنل  به آدرس بالا Load خواهد شد.

Quite: بجای نمایش خط ها صفحه گرافیکی نمایش داده شود در لحظه بوت شدن و بالا آمدن کرنل
ro:فقط خواندنی

در آخر این خط اگر کاراکتر عدد1 ویا s  باشد، سیستم عامل در محیط Run level تک کاربره (Single user) Load خواهد شد.

Save default

بخاطر سپردن انتخاب قبل
نکته: در فایل تنظیماتی گراب  اگر تنظیمات گراب را به شکل زیر تغییر دهید سیستم با محیط bash  بالا خواهد آمد:

init=/bin/sh

نکته: در تنظیمات Grub در خطی که با عبارت Vmlinuz یاkernel آغاز میشوداگر ورودی پارامتر Runlevel  را کاراکتر S 1 یا عدد 1 گذارید سیستم در حالت متن فرمان بوت خواهد شد.

  • behrooz mohamadi nsasab
۱۴
مهر

Init

مخفف Initialize  بوده و اولین پردازشی است که موجب می شوددیگر پردازش هاLoad  شده تا سیستم عامل  بصورت کامل Load بشود.

در تکنولوژی جدید،  بجای init از systemd  و یا در برخی موارد از upstart استفاده می شود.


Upstart

نسبت به Inti امکانات بیشتری داشته و درآن نواقص Init برطرف شده است.

Init با مشخصه path سرویس ها را start ویا Stop می کند ولی Upstart بر اساس Event (رویداد) سرویس را Start مینماید، همچنین لزوماً نیازمند مسیر نیست. یعنی با یک رویداد (همان event) یک سرویس به اجرا در خواهد آمد.

Upstart بصورت بهینه Dependency ها را تشخیص داده و پیش نیازهای یک سرویس قابل اجرا را قبل تر به اجرا در خواهد آورد.


Systemd(System Deamon)

سرویس ها بر اساس Port (سوکت) شناخته شده و به اجرا درآورده می‌شوند.

این تکنولوژی قابلیت به اجرا درآوردن تمام یا بخشی از یک سرویس را دارد، بطوریکه بخش خاص، یا قسمتی از یک سرویس درخواست داده شده Run بشود.

Systemd هر جزء را (Port ویا Device ویا service و ..) در قالب یک Unit  درنظر میگیرد و میتواند برای هر Unit خاص با UUID منحصر بفرد خود وارد عمل شود.

  • behrooz mohamadi nsasab
۱۴
مهر

مرکز اصلی سیستم عامل با حجم بسیار کوچک است که مدیریت کلی سیستم عامل را برعهده داشته و بصورت مستقیم با سخت‌افزار در ارتباط است.

کرنل وظیفه مدیریت سخت‌افزار و تخصیص منابع و حافظه, فایل ها و اجزای جانبی را دارد. همچنین آغازگر برنامه‌های کاربردی می باشد.

 Kernel مستقیما با سخت افزار در ارتباط بوده و I/O Management  و Process  Management و Device  Management و  File  Management و Memory  Management را انجام میدهد.

به بیان دیگر  هر Application یا برنامه کاربردی بر روی سیستم عامل برای ارتباط با سخت‌افزار نیازمند رابطی است که این رابط را کرنل برقرار میکند

  • behrooz mohamadi nsasab
۱۴
مهر

فراهم آوردن ابزاری برای دسترسی افراد کم توان به سیستم عامل(در کل کامپیوتر های شخصی و حتی سرور ها)

AccessX: (معلولیت‌های جسمی) ابزار دسترسی به X (یعنی محیط گرافیکی) مثل موسو و کیبورد
Visual Settings: معلولیت های بینایی
text-to-speech (TTS): خواندن نوشته‌ها
تمام محیط های x ابزاری را برای افراد کم توان در نظر دارند

بعنوان مثال در گنوم:موارد زیر موجود است(در آدرس Settings > Universal Access):

High Contrast
Zoom
Large text
Screen Reader
Screen Keyboard (show a keyboard on screen)
Visual Alerts (instead Beeps, flash the screen )
Sticky Keys (Press shift, then press a -> capital A)
Slow Keys (do not repeat keys after pressing a key for few seconds)
Bounce Keys (if you hit a key twice fast, it won't accept the second one)
Mouse Keys (Arrow keys on number path will work as a mouse)
Simulate Secondary Click (by holding down the click)
Hover click (click by waiting on a button)
TTS

نکته:ابزاری مانند برنامه‌های  Orca ویا Emacspeak میتوانند نوشته‌ها را برای افراد کم توان بخوانند(TTS)
نکته: برنامه GOK(Gnome On Screen Keyboard) در گنوم صفحه‌کلید مجازی ایجاد مینماید.

  • behrooz mohamadi nsasab
۲۷
شهریور

ابتدا از دستور زیر برای نمایش هارد و پارتیشن‌های موجود استفاده نمایید

ls

نکته: شماره گذاری پارتیشن‌ها از صفر (0) شروع می‌شود.

دستور زیر را به ترتیب از اول تا آخر برای تمامی پارتیشن‌ها امتحان میکنیم، تا زمانی که به پارتیشنی برسیم که فایل سیستم آن ext2 باشد

ls (hd*,partition_lable*)

پس از پیدا شدن پارتیش دستور زیر را برای آن می‌زنیم:

set boot=(hd*,partition_lable*)

set prefix=(hd*,partition_lable*)/boot/grub

و در آخر دستور زیر را بزنید:

insmod normal

normal

  • behrooz mohamadi nsasab
۲۴
شهریور

نگهداری مکانهایی که قابل استفاده اند و انتخاب پیشفرض آن‌ها

sudo dpkg-reconfigure locales

دستور زیر متغیرهای مکانی(برنامه ها متغیرهای خود را بر اساس چه کشوری تنظیم نمایند) را نمایش میدهد:
locale
خروجی:
LANG=en_US.utf8
LANGUAGE=
LC_CTYPE="en_US.utf8"
LC_NUMERIC="en_US.utf8"
LC_TIME="en_US.utf8"
LC_COLLATE="en_US.utf8"
LC_MONETARY="en_US.utf8"
LC_MESSAGES="en_US.utf8"
LC_PAPER="en_US.utf8"
LC_NAME="en_US.utf8"
LC_ADDRESS="en_US.utf8"
LC_TELEPHONE="en_US.utf8"
LC_MEASUREMENT="en_US.utf8"
LC_IDENTIFICATION="en_US.utf8"
LC_ALL=

بعنوان مثال LANG=en_US.UTF-8 نشان دهنده آن است که زبان سیستم روی انگلیسی به زبن آمریکا تنظیم شده است و همچنین فرم آن از utf8 پیروی میکند. همچنین موارد دیگر نشان دهنده نوع نمایش اطلاعات سیستم شما در خروجی است مثلاً زمان با رمت انگلیسی یا فارسی نمایش بشود

:

انگلیسی: LC_TIME=en_US.UTF-8

فارسی:LC_TIME=fa_IR



نکته:می‌توان با LC_ALL تمام موارد local را تغییر داد(با گذاشتن عبارت زیر در فایل etc/profile)

یه این معنی که با دستور زیر تمام موارد به عبارت جلوی مساوی تبدیل می‌شود:

export LC_ALL=fa_IR.UTF-8

برای برگرداندن به حالت قبل:

unset  LC_ALL

برای برگرداندن به حالت defaults

export LC_ALL=C

  • behrooz mohamadi nsasab
۲۴
شهریور

Timedatectl

بهترین دستور برای کنترل و بررسی سیستم دستور زیر است:
timedatectl
درخروجی این دستور عبارت real time clock یا RTC همان chip درون مادربرد هست که با خاموش شدن کامپیوتر مقدار ساعت را در خود ذخیره و نگهداری می‌کند
در خروجی این دستور عبارت DST یا daylight saving time همان مقدار یک ساعتی هست که در تابستان ساعت ها را به جلو و در زمستان ساعت ها را به عقب می‌کشانند

دستورات مفید:
timedatectl set-time 'YYYY-MM-DD HH:MM:SS'		#set time and date
timedatectl set-time HH:MM:SS				#for time only
timedatectl set-time YYYY-MM-DD				#for date only
timedatectl list-timezones				#list the available timezones
timedatectl set-timezone "Asia/Tehran" 			#Set timeZone
timedatectl set-timezone utc				#Set timeZone To UTC
timedatectl | grep local				#Find out if your hardware clock is set to local timezone-BestMode is "no"
timedatectl set-local-rtc 1				#Set hardware clock to local timezone
timedatectl set-local-rtc 0				#Set hardware clock to coordinated universal time (UTC)
timedatectl set-ntp true				#start automatic time synchronization with remote NTP server,
timedatectl set-ntp false				#disable NTP time synchronization


sudo dpkg-reconfigure tzdata				#debian: reconfig timerzone
cat /etc/timezone					#show current timezone
ls -ltrh /etc/localtime					#show current timezone[lrwxrwxrwx 1 root root 31 اوت   21 23:40 /etc/localtime -> /usr/share/zoneinfo/Asia/Tehran]
date							#Show time
date +%Y%m%d-%H%M%S					#Out: 20190707-134444
  • behrooz mohamadi nsasab
۲۴
شهریور

گاهی پیش می‌آید که یک یوزر بنا بر نیاز، دستور را با مالکیت یوزر خود اجرا نماید.

در این صورت باید با یکی از روش های زیر عمل نماید:


۱− باید در داخل یوزر خود لاگین نموده و از دستور زیر برای زمان گذاری اقدام نماید

crontab -e

۲− فایل زیر را با یک ادیتور باز کرده

vim /etc/crontab

و با فرمت زیر

m  h  dom mon dow  USER    command and arguments

برای زمان گذاری اقدام نماید


۳− در مسیر زیر

/etc/cron.d/

یک فایل ایجاد کرده و با فرمت

m  h  dom mon dow  USER    command and arguments

برای زمان گذاری اقدام نماید


۴−

  • behrooz mohamadi nsasab
۲۴
شهریور

اجرای یک دستور تنها یکبار

برنامه‌ریزی یک دستور در یک دقیقه بعد

at now + 1 min


برنامه‌ریزی یک دستور در روز بعد در زمان اکنون

at tomorrow


نکته:باید برای خروج ctrl+d رابفشرید

نکته:دستورات در شل بنام sh اجرا خواهند شدیعنیbin/sh/
مشاهده تمام کارهای موجود در صف انتظار

atq


حذف یک کار موجود در صف انتظار برحسب شماره آن

atrm 3

  • behrooz mohamadi nsasab
۲۴
شهریور


تفاوت cron و anacron در این است که اگر کاری در cron تعریف شود درصورت خاموش بودن سیستم، آن کار منقضی می‌شود و دیگر اجرا نخواهد شد. اما در anacron  مکانیزم بدین صورت است که حتس در صورت خاموش بودن سیستم عامل، کار مورد نظر پس از روشن شدن انجام خواهد شد.

معمولا برای تهیه فایل پشتیبانی یا backup از این مورد استفاده می‌شود .


/etc /anacrontab

  • behrooz mohamadi nsasab
۲۴
شهریور

Minute Hour DayOfMonth Month DayOfWeek Command


Minute: دقیقه(0-59)

Hour: ساعت(0-23)

DayOfMonth: روز از ماه(1-31)

Month: ماه(1-12 یا نام ماه)

DayOfWeek: روز از هفته(0-7 یا نام روز )، صفر یعنی یک‌شنبه و برای دیگر روزها به ترتیب از یک‌شنبه محاسبه شود


نکته: اگر جای یکی از موارد بالا ستاره گذاشته شود یعنی همه (مثلاً دقیقه را ستاره بود یعنی هر دقیقه)

نکته: اگر بجای زمان در موارد بالا تنها از reboot@ استفاده شود یعنی هربار که سیستم ریست شود کار خاص مورد نظر انجام بشود

نکته: اگر بجای زمان در موارد بالا تنها از daily@ استفاده شود یعنی هرروز کار خاص مورد نظر انجام بشود

نکته: وقتی دستوری در cron اجرا میشودخروجی آن دستور به owner آن cron ایمیل خواهد شد

نکته:cron یک سرویس است.

نکته: با افزودن یک job جدید تنظیمات و کارها در مکان زیر قرار می‌گیرند:

/var/spool/cron/tabs/ or /var/spool/crontabs

که به هیچ وجه نباید مستقیماً این فایل را ادیت کنیم بلکه باید توسط دستور crontab -e جاب را مدیریت کنیم که باعث بروز رسانیدر این فایل خواهد شد


مشاهده تمام job های موجود در cron کاربر فعلی

crontab -l


برای ادیت کردن و افزودن job  در گستره کاربر فعلی  از دستور زیر استفاه شود:

crontab -e

نکته: اگر در مسیرهای زیر  دستوری قرار بگیرد توسط سیستم عامل ضمانت میشود که آن دستور به اجرا در آورده شود(در بازه زمانی مشخص شده در نام آن دایرکتوری).

/etc/cron.daily:        once on each days

/etc/cron.hourly :     once on each hours

/etc/cron.monthly:   once on each month

/etc/cron.weekly:     once on each week


نکته: هرچه در داخل دایرکتوری /etc/cron.d/ قرار بگیرد گویی در ادامه فایل etc/crontab/ قرار گرفته است.این مکانیزم برای تمیز ماندن دستورات و فایل‌ها و ایجاد نظم در دادن دستورات متفاوت در فایل های متفاوت بوجود آمده است.مثلا یک فایل بنام raw ایجاد میکنیم و درون آن مانند فرم دستورcron  یک job میسازیم و آن را میبندیم، ازین پس کار آن فایل هم به کارهای سرویس cron افزوده خواهد شد.



مثال‌ها:

اجرا دستور در ساعت 14:15  اول هرماه

15 14 1 * * command


اجرا دستور در ساعت 22:00 در دوشنبه تا جمعه

0 22 * * 1-5 command


اجرا دستور در دقیقه 23 در هر ساعت زوج (دقیقه های 23 در تمام سات های روز ، درحالت هر دوساعت یکبار) در هر ماه از سال(مثلا:00:23 و 02:23 و 04:23 و 06:23 و ...)

23 0-23/2 * * * command



اجرا دستور در ساعت 04:05  در روزهای یک‌شنبه در هر ماه از سال

5 4 * * sun command


اجرا دستور در هر 5 دقیقه یکبار

*/5 * * * * command


اجرا دستور در هر 8:42 و 18:42 دقیقه در هر دوشنبه تا جمعه در هر ماه

42 8,18 * * 1-5 command


اجرا دستور در هر ریست شدن سیستم عامل

@reboot command


اجرا دستور در هر دقیقه 42 در هر چهارساعت یکبار

42*/4 * * * command


اجرا دستور در هر دوروز یکبار در روزهای دوشنبه تا پنج‌شنبه

* * * * 1-4/2 command


  • behrooz mohamadi nsasab